1.0.6 • Published 7 years ago
lambda-websocket v1.0.6
lambda-websocket
Note: This library is no longer maintained, it has been moved to the following repo.
An API Gateway Lambda wrapper that mimics server websockets
Installation
npm install lambda-websocketor
yarn add lambda-websocketUsage
To create a lambda-websocket, import the library and create a new instance of the LambdaWebSocket. Add event listener methods as you wish and then call createHandler to export the result as your lambdas handler.
import LambdaWebSocket from 'lambda-websocket';
const lambdaSocket = new LambdaWebSocket();
lambdaSocket.on('connect', async (context) => {
console.log('Client requested connection', context);
const { headers } = context;
// basic authorization header check
if (!headers.Authorization) {
return {
statusCode: "401"
}
}
});
lambdaSocket.on('message', async ({ send, message }) => {
console.log('Client sent message', message);
// send message to client
await send({ message: 'hello' })
// The lambda will automatically return a 200,
// but to override that return a response here.
// We will pretend that in this response we have created
// something.
return {
statusCode: "201",
};
});
lambdaSocket.on('close', async (context) => {
console.log('Client went away');
});
export default lambdaSocket.createHandler();Event Listeners
| Event | Params | Description |
|---|---|---|
| connect | Context | Client is requesting a connection |
| close | Context | Client was disconnected or requested a close |
| message | Context | Normal client communication |
Context Definition
| Name | Type | Defaults | Description |
|---|---|---|---|
| headers | Object | {} | The headers passed from the client |
| message | Object | {} | The message sent from the client, will try to auto-parse JSON |
| connectionID | String | The ID needed to connect to ApiGatewayManagementApi | |
| endpoint | String | constructed | The endpoint needed to connect to ApiGatewayManagementApi |
| domain | String | ||
| stage | String | ||
| type | String | Api Gateway eventType: DISCONNECTED, CONNECTED, MESSAGE | |
| send | Function | Send messages to the client. Non-Buffer items will be stringified |
Caveats
This library should be used in conjunction with the library serverless-websockets-plugin with a full example project here. It is not a complete websocket implementation and relies on the plugin to handle the API Gateway configuration.