This package has been deprecated

Author message:

Moved to https://www.npmjs.com/package/@lawcket/websocket

lambda-websocket

1.0.6 • Public • Published

lambda-websocket

Downloads Version License

Note: This library is no longer maintained, it has been moved to the following repo.

@lawcket/websocket

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.

Package Sidebar

Install

npm i lambda-websocket

Weekly Downloads

1

Version

1.0.6

License

MIT

Unpacked Size

9.13 kB

Total Files

6

Last publish

Collaborators

  • npm