UpgradeJS (minimal WebSocket utilities)

1.1.0 · abandoned · verified Wed Apr 22

UpgradeJS is a lightweight, low-level Node.js library designed to facilitate direct handling of HTTP upgrade requests, primarily for establishing raw WebSocket connections. It provides utilities for writing WebSocket handshake headers, framing and unmasking WebSocket data. A key limitation of this library is its explicit restriction to WebSocket payloads not exceeding 125 bytes. The package version `1.1.0` is the latest, but the project appears to be unmaintained, with its documentation largely reflecting an earlier `1.0.0` release and no visible recent development or a current active GitHub repository. This library offers a barebones approach, requiring developers to manage many WebSocket protocol details themselves, differentiating it from more feature-rich WebSocket libraries like `ws` or `Socket.IO` that handle framing, fragmentation, and other complexities automatically.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates a basic WebSocket server handling HTTP upgrades, receiving messages, and sending framed responses using UpgradeJS utilities.

const http = require('http');
const upgrade = require('upgrade');

const server = http.createServer();

server.on('upgrade', function (req, socket) {
    const send = upgrade.getSend(socket);
    upgrade.writeHead(req, socket);

    socket.on('data', function (buff) {
        const data = upgrade.getData(buff);
        console.log('Server received: ' + data);
        send('Echo: ' + data); // Echo back the received message
    });

    socket.on('close', () => console.log('Client disconnected.'));
    socket.on('error', (err) => console.error('Socket error:', err));

    send('Welcome to the Server!');
});

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

// To test, run this in a browser console:
// const socket = new WebSocket('ws://localhost:8000');
// socket.onopen = () => { console.log('Socket Open.'); socket.send('Hello Server!'); };
// socket.onmessage = (evt) => { console.log('Client received: ' + evt.data); };
// socket.onclose = () => { console.log('Socket Closed.'); };
// socket.onerror = (err) => { console.error('Socket Error:', err); };

view raw JSON →