{"id":26409,"library":"socket-rpc","title":"socket-rpc","description":"A simple RPC framework for Node.js using socket.io that follows a server-slave model. Version 1.0.3 is the latest stable release. It allows the server to call functions registered on slave clients via WebSocket. Key differentiators: lightweight, minimal API, built on socket.io. Note: The library is somewhat outdated and relies on socket.io v1.x, which may have compatibility issues with newer versions.","status":"maintenance","version":"1.0.3","language":"javascript","source_language":"en","source_url":"https://github.com/polariszz/socket-rpc","tags":["javascript","rpc","js","socket.io"],"install":[{"cmd":"npm install socket-rpc","lang":"bash","label":"npm"},{"cmd":"yarn add socket-rpc","lang":"bash","label":"yarn"},{"cmd":"pnpm add socket-rpc","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"WebSocket transport for RPC communication","package":"socket.io","optional":false}],"imports":[{"note":"Named export from package; default export is not available.","wrong":"const RPCServer = require('socket-rpc');","symbol":"RPCServer","correct":"import { RPCServer } from 'socket-rpc'"},{"note":"Named export; wrong pattern uses default require which yields an object.","wrong":"const RPCSlave = require('socket-rpc').RPCSlave;","symbol":"RPCSlave","correct":"import { RPCSlave } from 'socket-rpc'"},{"note":"Library exposes only named exports, no default export.","wrong":"import socketRpc from 'socket-rpc';","symbol":"socket-rpc","correct":"import { RPCServer } from 'socket-rpc'"}],"quickstart":{"code":"import http from 'http';\nimport { RPCServer } from 'socket-rpc';\nimport { RPCSlave } from 'socket-rpc';\n\n// Server\nconst server = http.createServer();\nconst rpc = RPCServer(server);\nrpc.getServer(); // returns socket.io server instance\n\n// Slave (client)\nconst slave = RPCSlave({\n  url: 'http://localhost:8000',\n  id: 0,\n  name: 'example'\n});\nslave.register('greet', name => `Hello, ${name}`);\n\n// Then server can call:\nrpc.run('0', 'greet', 'World').then(msg => console.log(msg));\n\nserver.listen(8000);","lang":"javascript","description":"Demonstrates creating a server and slave, registering a function on slave, and calling it from the server."},"warnings":[{"fix":"Pin socket.io to version 1.x in package.json.","message":"Requires socket.io v1.x compatibility; socket.io v2+ may break.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Add .catch() to run() promises or handle errors on the slave side.","message":"No error handling for run() calls; rejected promises will cause unhandled rejections.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Evaluate if active development is needed; fork or migrate.","message":"The library has not been updated since 2018; consider using a modern alternative like uWebSockets.js or raw socket.io RPC.","severity":"deprecated","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"npm install socket-rpc --save","cause":"Package not installed","error":"Cannot find module 'socket-rpc'"},{"fix":"Ensure slave is connected and registered before server calls run().","cause":"run() returns undefined if slave not connected or not registered","error":"TypeError: rpc.run(...).then is not a function"},{"fix":"Use a different port or kill existing process.","cause":"Port already in use","error":"Error: listen EADDRINUSE :::8000"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}