fastwss
v1.0.0
Published
Fastest WebSocket library for Node.js. Drop-in ws replacement. 900k+ msg/s.
Maintainers
Readme
fastwss
900k+ msg/s WebSocket for Node.js. Drop-in replacement for the ws package. Zero dependencies.
npm install fastwssKullanım — ws ile birebir aynı API
import { WebSocket, WebSocketServer } from "fastwss";Server
import { WebSocketServer } from "fastwss";
const wss = new WebSocketServer({ port: 8080 });
wss.on("connection", (ws, req) => {
ws.on("message", (data, isBinary) => {
ws.send(data); // echo
});
ws.on("close", (code, reason) => { });
ws.on("error", (err) => { });
});Client
import { WebSocket } from "fastwss";
const ws = new WebSocket("ws://localhost:8080");
ws.on("open", () => ws.send("hello"));
ws.on("message", (data, isBinary) => console.log(data.toString()));
ws.on("close", (code, reason) => { });
ws.on("error", (err) => { });Mevcut ws kodunu geçirmek
// önce
import WebSocket from "ws";
const WebSocketServer = WebSocket.Server;
// sonra — sadece import satırını değiştir
import { WebSocket, WebSocketServer } from "fastwss";API
new WebSocketServer(options)
| Seçenek | Tip | Varsayılan | Açıklama |
|---|---|---|---|
| port | number | — | Dinlenecek port |
| host | string | — | Bind adresi |
| path | string | — | Sadece bu path'e upgrade et |
| maxPayload | number | 104857600 | Maks frame boyutu (byte) |
| server | http.Server | — | Mevcut HTTP sunucusuna bağla |
| noServer | boolean | false | Manuel upgrade için |
Metodlar
wss.clients // Set<WebSocket> — bağlı tüm clientlar
wss.close(cb) // Sunucuyu kapat
wss.address() // { address, port, family }
wss.handleUpgrade(req, socket, head, cb) // noServer moduWebSocket (hem client hem server tarafı)
ws.readyState // 0 CONNECTING | 1 OPEN | 2 CLOSING | 3 CLOSED
ws.send(data, [opts], [cb])
ws.close([code], [reason])
ws.ping([data])
ws.pong([data])
ws.terminate() // sert kes
// Toplu gönderim — çok daha hızlı
ws.sendBatch([data1, data2, data3, ...])ws.binaryType
ws.binaryType = "nodebuffer" // varsayılan → Buffer
ws.binaryType = "arraybuffer" // → ArrayBufferPerformans
| Test | msg/s |
|---|---|
| send() loop (server → client) | 456,000 |
| Receive tarafı (client) | 963,810 |
| sendBatch() receive | 3,067,036 |
32 byte payload, loopback, Node.js v22, tek işlem.
sendBatch — kitlesel gönderim
Aynı anda çok sayıda mesaj gönderirken sendBatch kullan:
wss.on("connection", (ws) => {
// guild update, broadcast, vb.
const msgs = users.map(u => JSON.stringify({ type: "presence", user: u }));
ws.sendBatch(msgs);
});noServer — Express / Fastify ile birlikte
import express from "express";
import { createServer } from "node:http";
import { WebSocketServer } from "fastwss";
const app = express();
const server = createServer(app);
const wss = new WebSocketServer({ noServer: true });
server.on("upgrade", (req, socket, head) => {
wss.handleUpgrade(req, socket, head, (ws) => {
wss.emit("connection", ws, req);
});
});
server.listen(3000);Notlar
- Compression (permessage-deflate) yok — v2'de gelecek
- TLS için
wss://URL'i kullan, sertifika yönetimi dışarıda - Node.js ≥ 18 gerekli
