Faye-WebSocket

0.11.4 · abandoned · verified Sun Apr 19

Faye-WebSocket is a standards-compliant WebSocket server and client library designed for Node.js environments. Extracted from the larger Faye project, it provides a low-level, event-driven API for handling WebSocket connections (RFC 6455) and EventSource streams. Unlike a full WebSocket server, it integrates with existing Node.js HTTP servers by listening for 'upgrade' events. The latest stable version, 0.11.4, was published in May 2021. The project appears to be largely unmaintained and is considered inactive, with no new versions or significant development in the past five years. Its primary differentiation lies in providing a direct implementation of the WebSocket API without significant higher-level abstractions, allowing developers fine-grained control over the protocol.

Common errors

Warnings

Install

Imports

Quickstart

This example demonstrates both a basic Faye-WebSocket server that echoes messages and a client that connects to it, sends a message, and closes.

const WebSocket = require('faye-websocket');
const http = require('http');

// --- WebSocket Server --- 
const server = http.createServer();

server.on('upgrade', function(request, socket, body) {
  if (WebSocket.isWebSocket(request)) {
    const ws = new WebSocket(request, socket, body);

    ws.on('message', function(event) {
      console.log('Server received:', event.data);
      ws.send(`Echo: ${event.data}`);
    });

    ws.on('close', function(event) {
      console.log('Server closed:', event.code, event.reason);
      ws = null;
    });

    ws.on('error', function(event) {
      console.error('Server error:', event.message);
    });
  }
});

server.listen(8000, () => {
  console.log('WebSocket server listening on port 8000');
});

// --- WebSocket Client (connects to the server above) --- 
const clientWs = new WebSocket.Client('ws://localhost:8000/');

clientWs.on('open', function(event) {
  console.log('Client connected');
  clientWs.send('Hello from client!');
});

clientWs.on('message', function(event) {
  console.log('Client received:', event.data);
  if (event.data.includes('Echo')) {
    clientWs.close(1000, 'Finished');
  }
});

clientWs.on('close', function(event) {
  console.log('Client closed:', event.code, event.reason);
});

clientWs.on('error', function(event) {
  console.error('Client error:', event.message);
});

view raw JSON →