Module 基礎模塊

模塊ws

websocket 支持模塊

使用方法:

1
var ws = require('ws');

創建一個服務器:

1 2 3 4 5 6 7 8 9
var ws = require('ws'); var http = require('http'); var svr = new http.Server(80, { '/ws': ws.upgrade((conn, req) => { conn.onmessage = e => console.log(e.data); }) }); svr.start();

使用 WebSocket 客戶端:

1 2 3 4
var ws = require('ws'); var conn = new ws.Socket('ws://127.0.0.1/ws'); conn.onmessage = e => console.log(e.data);

對象

Message

創建一個websocket 消息對象,參見 WebSocketMessage

1
WebSocketMessage ws.Message;

Socket

WebSocket 對象,參見 WebSocket

1
WebSocket ws.Socket;

靜態函數

upgrade

創建一個websocket 協議處理器,從 http 接收upgrade 請求並握手,生成 WebSocket 對象

1
static Handler ws.upgrade(Function accept);

調用參數:

  • accept: Function, 連接成功處理函數,回調將傳遞兩個參數,第一個參數為接收到的 WebSocket 對象,第二個參數為握手時的 HttpRequest 對象

返回結果:


創建一個websocket 協議處理器,從 http 接收upgrade 請求並握手,生成 WebSocket 對象

1 2
static Handler ws.upgrade(Object opts, Function accept);

調用參數:

  • opts: Object, 連接選項,缺省是{}
  • accept: Function, 連接成功處理函數,回調將傳遞兩個參數,第一個參數為接收到的 WebSocket 對象,第二個參數為握手時的 HttpRequest 對象

返回結果:

opts 包含請求的附加選項,支持的內容如下:

1 2 3 4
{ "perMessageDeflate": false, // 指定是否支持压缩,缺省不支持 "maxPayload": 67108864 // 指定最大数据包尺寸,缺省为 67108864 }

常量

CONTINUE

指定websocket 消息類型0,代表一個繼續幀

1
const ws.CONTINUE = 0;

TEXT

指定websocket 消息類型1,代表一個文本幀

1
const ws.TEXT = 1;

BINARY

指定websocket 消息類型2,代表一個二進制幀

1
const ws.BINARY = 2;

CLOSE

指定websocket 消息類型8,連接關閉

1
const ws.CLOSE = 8;

PING

指定websocket 消息類型9,代表一個ping 幀

1
const ws.PING = 9;

PONG

指定websocket 消息類型10,代表一個pong 幀

1
const ws.PONG = 10;

CONNECTING

指定 WebSocket 狀態,表示正在連接中

1
const ws.CONNECTING = 0;

OPEN

指定 WebSocket 狀態,表示打開狀態

1
const ws.OPEN = 1;

CLOSING

指定 WebSocket 狀態,表示已發送CLOSE 消息,等待關閉中

1
const ws.CLOSING = 2;

CLOSED

指定 WebSocket 狀態,表示已經關閉

1
const ws.CLOSED = 3;