1.0.6 • Published 5 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-websocket
or
yarn add lambda-websocket
Usage
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.