Jetzt schreiben wir einen einfachen WebSocket-Server in node.js. Wenn Sie eine Verbindung zu diesem Server herstellen, erhalten Sie als Antwort eine Willkommensnachricht. Außerdem stehen einige einfache Befehle zur Ausführung zur Verfügung.
Dazu müssen Sie Node.js mit dem mitgelieferten npm-Paketmanager installieren
Projektaufbau
Zuerst müssen wir ein Verzeichnis für das zukünftige Projekt erstellen
mkdir websocket-server-node
Gehen Sie in das Verzeichnis
cd websocket-server-node
Als nächstes müssen Sie ein neues Projekt über npm initialisieren
npm init
Das Installationsprogramm fordert Sie auf, einige Fragen zu beantworten. Sie können diese überspringen
, WS UTF-8
npm install ws
npm install --save-optional utf-8-validate
websocket-
. server.js, . , GitHub.
server.js:
websocket
const WebSocket = require('ws');
, , WebSocket, WebSocket-.
const wsServer = new WebSocket.Server({port: 9000});
HTTP-, WebSocket- . HTTP- , WebSocket- , .
, onConnect.
wsServer.on('connection', onConnect);
onConnection ws-, .
onConnect , wsClient. wsClient: message close.
message - .
close - .
onConnect, .
onConnect:
function onConnect(wsClient) {
console.log(' ');
//
wsClient.send('');
wsClient.on('message', function(message) {
/* */
}
wsClient.on('close', function() {
//
console.log(' ');
}
}
close .
. , JSON-. JSON , .
JSON :
{
action: 'ECHO' | 'PING',
data?: string //
}
, :
echo-, data
ping, pong
, " "
:
try {
// , JSON-
const jsonMessage = JSON.parse(message);
switch (jsonMessage) {
case 'ECHO':
wsClient.send(jsonMessage.data);
break;
case: 'PING':
setTimeout(function() {
wsClient.send('PONG');
}, 2000);
break;
default:
console.log(' ');
break;
}
} catch (error) {
console.log('', error);
}
, PING , 2 .
server.js , , .
console.log(' 9000 ');
:
node server.js
Windows Linux (Ctrl + C)
MacOs (Cmd + C)
,
Window:
ipconfig
Linux MacOS:
ifconfig
192.168.0.15, ws://192.168.0.15:9000.
, F12. DevTools, :
const myWs = new WebSocket('ws://localhost:9000');
//
myWs.onopen = function () {
console.log('');
};
//
myWs.onmessage = function (message) {
console.log('Message: %s', message.data);
};
// echo-
function wsSendEcho(value) {
myWs.send(JSON.stringify({action: 'ECHO', data: value.toString()}));
}
// ping
function wsSendPing() {
myWs.send(JSON.stringify({action: 'PING'}));
}
. wsSendPing:
wsSendPing()
2 , :
Nachricht: PONG
Rufen Sie beispielsweise die Funktion wsSendEcho mit dem Inhalt "Test!" Auf, und die Konsole gibt Folgendes aus:
Nachricht: Test!
Das ist alles! Wer es mochte, legte wie, abonnieren. Gut zu allen!
Link zum vollständigen GitHub-Code