Registry / devops / websocket-driver

websocket-driver

JSON →
library0.7.5jsnpmunverified

A complete WebSocket protocol implementation with pluggable I/O, extracted from the Faye project. Current stable version 0.7.5, released August 2020. Supports RFC 6455, draft-75, and draft-76. Handles handshake negotiation, subprotocol selection, extensions via websocket-extensions, message framing (text, binary, ping, pong, close), fragmentation, masking, and close handshake. Decouples protocol details from I/O, allowing use with HTTP servers (http.createServer) or raw TCP (net module). Typically used as a low-level library by higher-level WebSocket libraries like faye-websocket.

npm install websocket-driver
INSTALL
IMPORT
SIG · WEBSOCKET-DRIVER
W
websocket-driver
devopsjavascriptv0.7.5
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

websocket
import websocket from 'websocket-driver'
const websocket = require('websocket-driver')
Default ESM import. CommonJS require() works too but is less idiomatic in modern Node.
http
import { http } from 'websocket-driver'
import http from 'websocket-driver'
Named export for creating a driver from an HTTP request object.
server
import { server } from 'websocket-driver'
import { Server } from 'websocket-driver'
Named export for creating a driver in a bare TCP server context.

Shows how to attach a WebSocket driver to an HTTP upgrade event, pipe the socket, and handle incoming messages.

import http from 'http'; import websocket from 'websocket-driver'; const server = http.createServer(); server.on('upgrade', (request, socket, body) => { if (!websocket.isWebSocket(request)) return; const driver = websocket.http(request); driver.io.write(body); socket.pipe(driver.io).pipe(socket); driver.messages.on('data', (message) => { console.log('Got a message', message.toString()); }); driver.start(); }); server.listen(8080, () => console.log('Running on 8080'));
Debug
Known issues
gotchaMust call driver.io.write(body) before piping the socket to ensure the handshake body is processed.
fix
After creating the driver, write the 'body' buffer to driver.io immediately.
affects: >=0.0.0
gotchadriver.messages is a stream; you must pipe or listen for 'data' events to receive messages.
fix
Use driver.messages.on('data', callback) or pipe to another stream.
affects: >=0.0.0
gotchaIn TCP server mode, the 'connect' event must be used to detect WebSocket requests.
fix
Listen for 'connect' on the driver and then call websocket.isWebSocket(driver) to check.
affects: >=0.0.0
Errors
Common errors & fixes
Error: write after end
Calling driver.io.write(body) after socket.pipe(driver.io) may cause the stream to have ended.
fix
Ensure driver.io.write(body) is called before piping the socket: driver.io.write(body); socket.pipe(driver.io).pipe(socket);
TypeError: Cannot read property 'on' of undefined
driver.messages is undefined because the driver hasn't been started yet or was created incorrectly.
fix
Verify the driver is created via websocket.http(request) or websocket.server() and that driver.start() is called.
ReferenceError: websocket is not defined
Missing import or incorrect import of the module.
fix
Ensure you have imported the module: import websocket from 'websocket-driver' or const websocket = require('websocket-driver').
Upgrade
Version history
0.7.5latest on npm
Audit
Dependencies
websocket-extensionsrequiredRequired for negotiating and using WebSocket extensions (e.g., permessage-deflate). Automatically loaded at runtime.
Agent activity
20 hits · last 30 days
node
17
OpenAI (training)
1
Resources
websocket-driver — npm install websocket-driver · libregistry