Socket
Socket
Sign inDemoInstall

websocket-rpc-protocol

Package Overview
Dependencies
2
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    websocket-rpc-protocol

A JSON RPC protocol for working over websockets. Sheds the weight of JSON RPC to simplify argument names and adds features.


Version published
Weekly downloads
28
increased by133.33%
Maintainers
1
Install size
115 kB
Created
Weekly downloads
 

Readme

Source

Websocket-RPC-Protocol

Client and server libraries for handling RPC calls between the browser and a Cloudflare websocket interface. The client library will automatically try to reconnect after being disconnected from the server. For details on the protocol see PROTOCOL.md.

Installation

npm install websocket-rpc-protocol

Server Usage

import server from 'websocket-rpc-protocol/server';


createServer(websocket, ({ push }) => {
  // Any state that could be built up over type during the connection of this single client (user id, etc)
  let userState = {};

  // Add any functions you want, only those returned will be public
  function privateFunction() {
    // do something not exposed to the client
  }

  // Define functions which will be exposed for calling by the client
  function sayHi(name?: string) {
    return `Hello ${name || 'world'}!`;
  }

  // return the public API
  return {
    sayHi,
    namespace: {
      sayBye(name?: string) {
        return `Goodbye cruel ${name || 'world'}!`;
      }
    }
  };
});

Client Usage

import createClient from 'websocket-rpc-protocol/client';

interface API {
  sayHi(name?: string): Promise<string>;
}

const client = createClient<API>('wss://url-to-server');

// Call the method directly, TypeScript will support it and the method will be proxied using the send() method
await client.sayHi(); // Hello world!
await client.sayHi('everyone'); // Hello everyone!
await client.namespace.sayBye(); // Goodbye cruel world!

console.log(client.get());
/*
Outputs:
{
  online: true, // Whether the browser's APIs think the browser is online
  connected: true, // Whether the websocket is connected
  authed: true, // If the connection has been successfully authenticated with a JWT
  serverTimeOffset: 20, // The offset in milliseconds between the client and the server
}
*/

Keywords

FAQs

Last updated on 11 Apr 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc