modulews
modulo di supporto websocket
WebSocketIl protocollo è un protocollo di comunicazione full-duplex basato sul protocollo TCP. Stabilisce una connessione ininterrotta tra il browser e il server, può realizzare la trasmissione dati bidirezionale in tempo reale e può supportare la trasmissione dati in qualsiasi formato. Nelle fibj,WebSocketIl modulo di supporto fornisce le interfacce API corrispondenti da implementareWebSocketSviluppo lato server e lato client.
Istruzioni:
1var ws = require('ws');
Crea un server:
1
2
3
4
5
6
7
8
9var 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();
Nel codice sopra, il fibjs integrato viene prima caricato tramite la funzione require.WebSocketSupportare i moduli, quindi utilizzarlihttp.ServerLa classe crea un'istanza del server HTTP, specifica il numero della porta di ascolto e il percorso della richiesta HTTP, quindi utilizza la funzione di aggiornamento nel percorso specificato per aggiornare la richiesta aWebSocketconnessione, il server crea automaticamente un fileWebSocketL'oggetto fornisce onopen, onmessage, onerror, onclose e altri eventi e può inviare dati al client tramite la funzione send.
utilizzoWebSocketCliente:
1
2
3
4var ws = require('ws');
var conn = new ws.Socket('ws://127.0.0.1/ws');
conn.onmessage = e => console.log(e.data);
Può essere creato daSocketistanza e specificare aWebSocketURL per completare la connessione client.SocketLa classe fornisce onmessage, onerror, onclose e altre funzioni di callback e funzioni di invio, che possono inviare dati al server e ricevere dati inviati dal server.
bisogna essere consapevoli è,WebSocketI moduli di supporto sono sempliciWebSocketUn'implementazione del protocollo che deve funzionare sopra il protocollo HTTP. Lato server è possibile utilizzare la funzione di aggiornamento per convertire le richieste HTTP in fileWebSocketconnessione e, dal lato client, è necessario passareWebSocketURL del protocollo per specificare l'indirizzo del server a cui connettersi.
oggetto
Message
Creare un oggetto messaggio websocket, vedereWebSocketMessage
1WebSocketMessage ws.Message;
Socket
WebSocketoggetto, vediWebSocket
1WebSocket ws.Socket;
funzione statica
upgrade
Crea un gestore di protocollo websocket dahttpRicevi richiesta di aggiornamento e stretta di mano, generaWebSocketoggetto
1static Handler ws.upgrade(Function accept);
Parametri di chiamata:
- accept: Funzione, funzione di elaborazione della connessione riuscita, la richiamata passerà due parametri, il primo parametro è quello ricevutoWebSocketOggetto, il secondo parametro è la stretta di manoHttpRequestoggetto
Risultati restituiti:
- Handler, restituisce il gestore del protocollo, può essere utilizzato conHttpServer,Chain,RoutingIn attesa dell'attracco```
Crea un gestore di protocollo websocket dahttpRicevi richiesta di aggiornamento e stretta di mano, generaWebSocketoggetto
1
2static Handler ws.upgrade(Object opts,
Function accept);
Parametri di chiamata:
- opts: Oggetto, opzione di connessione, l'impostazione predefinita è {}
- accept: Funzione, funzione di elaborazione della connessione riuscita, la richiamata passerà due parametri, il primo parametro è quello ricevutoWebSocketOggetto, il secondo parametro è la stretta di manoHttpRequestoggetto
Risultati restituiti:
- Handler, restituisce il gestore del protocollo, può essere utilizzato conHttpServer,Chain,RoutingIn attesa dell'attracco
opts contiene opzioni aggiuntive per la richiesta, supportate come segue:
1
2
3
4{
"perMessageDeflate": false, // specify whether to use permessage-deflate, default is true
"maxPayload": 67108864 // specify the maximum allowed message size, default is 64MB
}
costante
CONTINUE
Specificare il tipo di messaggio websocket 0, che rappresenta un frame di continuazione
1const ws.CONTINUE = 0;
TEXT
Specificare il tipo di messaggio websocket 1, che rappresenta una cornice di testo
1const ws.TEXT = 1;
BINARY
Specificare il tipo di messaggio websocket 2, che rappresenta un frame binario
1const ws.BINARY = 2;
CLOSE
Specificare il tipo di messaggio websocket 8, la connessione viene chiusa
1const ws.CLOSE = 8;
PING
Specificare il tipo di messaggio websocket 9, che rappresenta un frame ping
1const ws.PING = 9;
PONG
Specificare il tipo di messaggio websocket 10, che rappresenta un frame pong
1const ws.PONG = 10;
CONNECTING
SpecificareWebSocketstato, indicando che è in corso la connessione
1const ws.CONNECTING = 0;
OPEN
SpecificareWebSocketstato, che indica lo stato aperto
1const ws.OPEN = 1;
CLOSING
SpecificareWebSocketstatus, che indica che il messaggio CLOSE è stato inviato ed è in attesa di essere chiuso.
1const ws.CLOSING = 2;
CLOSED
SpecificareWebSocketstato, indicando che è stato chiuso
1const ws.CLOSED = 3;