📅 You're Invited: Meet the Socket team at RSAC (April 28 – May 1).RSVP
Socket
Sign inDemoInstall
Socket

websocket-rpc-protocol

Package Overview
Dependencies
Maintainers
0
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

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.

0.4.2
latest
Source
npm
Version published
Weekly downloads
18
-25%
Maintainers
0
Weekly downloads
 
Created
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

WebSocket

FAQs

Package last updated on 26 Jan 2025

Did you know?

Socket

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