Skip to content

Commit 7ee1944

Browse files
committed
Add support websocket return response
1 parent 9189ffb commit 7ee1944

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

aws/api_gateway_websocket.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,14 @@ func WebsocketResponse(w *WebsocketResponseWriter, multiValue bool) (r *events.A
164164
r.Headers = utils.SemicolonSeparatedHeaderMap(w.Header())
165165
}
166166

167+
if 0 < w.buf.Len() {
168+
if r.IsBase64Encoded {
169+
r.Body = base64.StdEncoding.EncodeToString(w.buf.Bytes())
170+
} else {
171+
r.Body = w.buf.String()
172+
}
173+
}
174+
167175
w.Done()
168176
return
169177
}

aws/websocket_response_writer.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package aws
22

33
import (
4+
"bytes"
45
"context"
56
"github.com/aws/aws-lambda-go/events"
67
"net/http"
@@ -14,6 +15,7 @@ type WebsocketResponseWriter struct {
1415
headers http.Header
1516
wroteHeader bool
1617
closeCh chan bool
18+
buf *bytes.Buffer
1719
}
1820

1921
func NewWebsocketResponseWriter(ctx context.Context, client APIGatewayManagementAPI, request *events.APIGatewayWebsocketProxyRequest) *WebsocketResponseWriter {
@@ -23,6 +25,7 @@ func NewWebsocketResponseWriter(ctx context.Context, client APIGatewayManagement
2325
req: request,
2426
headers: map[string][]string{},
2527
closeCh: make(chan bool, 1),
28+
buf: bytes.NewBuffer(nil),
2629
}
2730
}
2831

@@ -35,6 +38,8 @@ func (w *WebsocketResponseWriter) Write(i []byte) (int, error) {
3538
w.WriteHeader(http.StatusOK)
3639
}
3740

41+
w.buf.Write(i)
42+
3843
err := w.client.PostToConnection(w.ctx, w.req.RequestContext.ConnectionID, i)
3944
if err != nil {
4045
return 0, err

0 commit comments

Comments
 (0)