{"id":16700989,"url":"https://github.com/armsnyder/awswebsocketadapter","last_synced_at":"2025-08-17T16:34:10.051Z","repository":{"id":57565387,"uuid":"337566184","full_name":"armsnyder/awswebsocketadapter","owner":"armsnyder","description":"Go package for running an AWS Lambda function for a websocket-type API Gateway, locally","archived":false,"fork":false,"pushed_at":"2021-02-11T21:45:31.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-21T00:49:58.787Z","etag":null,"topics":["adapter","api-gateway","aws","aws-api-gateway","aws-apigateway","aws-lambda","aws-lambda-golang","aws-websockets","lambda-go","local-development","testing","testing-tools","websocket","websocket-server","websockets"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/armsnyder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-02-09T23:36:56.000Z","updated_at":"2021-02-26T05:24:18.000Z","dependencies_parsed_at":"2022-09-03T11:20:41.212Z","dependency_job_id":null,"html_url":"https://github.com/armsnyder/awswebsocketadapter","commit_stats":null,"previous_names":["armsnyder/aws-websocket-adapter"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fawswebsocketadapter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fawswebsocketadapter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fawswebsocketadapter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armsnyder%2Fawswebsocketadapter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/armsnyder","download_url":"https://codeload.github.com/armsnyder/awswebsocketadapter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532549,"owners_count":20306155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adapter","api-gateway","aws","aws-api-gateway","aws-apigateway","aws-lambda","aws-lambda-golang","aws-websockets","lambda-go","local-development","testing","testing-tools","websocket","websocket-server","websockets"],"created_at":"2024-10-12T18:27:21.890Z","updated_at":"2025-03-14T06:12:23.800Z","avatar_url":"https://github.com/armsnyder.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWS Websocket Adapter\n\nThis `awswebsocketadapter` Go package can be used to run an AWS Lambda function integration\nfor a websocket-type API Gateway, locally.\n\nIt implements `http.Handler` to handle websocket connections\nand invokes the provided AWS Lambda handler function\nfor any `CONNECT`, `DISCONNECT` or `MESSAGE` events.\n\nIt also implements the `apigatewaymanagementapiiface.ApiGatewayManagementApiAPI` client interface\nfrom [aws-sdk-go](https://github.com/aws/aws-sdk-go), so it can be used to write messages back to a client.\n\n## Example\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\t\"net/http\"\n\n\t\"github.com/aws/aws-lambda-go/events\"\n\t\"github.com/aws/aws-sdk-go/service/apigatewaymanagementapi\"\n\t\"github.com/aws/aws-sdk-go/service/apigatewaymanagementapi/apigatewaymanagementapiiface\"\n\n\t\"github.com/armsnyder/awswebsocketadapter\"\n)\n\nfunc main() {\n\t// Create the adapter.\n\tvar adapter awswebsocketadapter.Adapter\n\n\t// Set the LambdaHandler to a real lambda handler function.\n\tadapter.LambdaHandler = createHandler(\u0026adapter)\n\n\t// Listen for ws:// requests.\n\terr := http.ListenAndServe(\":8080\", \u0026adapter)\n\tlog.Fatal(err)\n}\n\n// createHandler returns a handler function that can be passed to lambda.Start,\n// from the aws-lambda-go SDK.\nfunc createHandler(client apigatewaymanagementapiiface.ApiGatewayManagementApiAPI) func(context.Context, events.APIGatewayWebsocketProxyRequest) (events.APIGatewayProxyResponse, error) {\n\treturn func(ctx context.Context, request events.APIGatewayWebsocketProxyRequest) (resp events.APIGatewayProxyResponse, err error) {\n\t\tresp = events.APIGatewayProxyResponse{StatusCode: 200}\n\n\t\t// As an example, send a message in response to every message received.\n\t\t// This demonstrates how Adapter can be used as an API Gateway Management API client.\n\t\tif request.RequestContext.EventType == \"MESSAGE\" {\n\t\t\treply := \u0026apigatewaymanagementapi.PostToConnectionInput{\n\t\t\t\tConnectionId: \u0026request.RequestContext.ConnectionID,\n\t\t\t\tData:         []byte(\"hello\"),\n\t\t\t}\n\n\t\t\t_, err = client.PostToConnectionWithContext(ctx, reply)\n\t\t}\n\n\t\treturn resp, err\n\t}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmsnyder%2Fawswebsocketadapter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmsnyder%2Fawswebsocketadapter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmsnyder%2Fawswebsocketadapter/lists"}