Skip to content

Commit 0b8fa46

Browse files
committed
Add settings for websocket response mode
1 parent 5cc01a0 commit 0b8fa46

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

aws/adaptor.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ import (
1414
var DEBUGDumpPayload = os.Getenv("DEBUG_DUMP_PAYLOAD")
1515
var LambdaInvokeMode = os.Getenv("LAMBDA_INVOKE_MODE")
1616

17+
// WebsocketResponseMode
18+
// * return - use lambda return value as response
19+
// * post_to_connection - use PostToConnection API to send response
20+
var WebsocketResponseMode = os.Getenv("WEBSOCKET_RESPONSE_MODE")
21+
1722
type LambdaIntegrationType int
1823

1924
const (

aws/lambda.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,18 @@ func (l *LambdaHandler) InvokeWebsocketAPI(ctx context.Context, request *events.
171171
l.httpHandler.ServeHTTP(w, req)
172172
return RESTAPITargetResponse(w, multiValue)
173173
} else {
174-
if apiGW, err := l.ProvideAPIGatewayClient(ctx, request); err != nil {
175-
return nil, err
174+
if WebsocketResponseMode == "post_to_connection" {
175+
if apiGW, err := l.ProvideAPIGatewayClient(ctx, request); err != nil {
176+
return nil, err
177+
} else {
178+
w := NewWebsocketResponseWriter(ctx, apiGW, request)
179+
l.httpHandler.ServeHTTP(w, req)
180+
return WebsocketResponse(w, multiValue)
181+
}
176182
} else {
177-
w := NewWebsocketResponseWriter(ctx, apiGW, request)
183+
w := NewResponseWriter()
178184
l.httpHandler.ServeHTTP(w, req)
179-
return WebsocketResponse(w, multiValue)
185+
return RESTAPITargetResponse(w, multiValue)
180186
}
181187
}
182188
}

0 commit comments

Comments
 (0)