WebSocket与https有许多共同点。实际上,它们最初都是作为https连接开始,并被升级为持久的WebSocket连接。
因此,您的客户端(浏览器中的Javascript)使用WebSocket对象的实例初始化连接。然后,它可以发送和接收来自服务器的消息。您的浏览器代码可能如下所示。它启动一个连接。当连接打开时,它会发送一条消息。
const ws = new WebSocket("ws://www.example.com:8090/socketserver");
ws.onmessage = function (event) {
console.log ('incoming', event.data);
}
ws.onopen = function (event) {
ws.send ("Hey there server!");
}
在服务器(nodejs)端,您需要设置一个websocket服务器来接受客户端的连接。您可以使用
npm's ws package来完成此操作。(还有其他的包可用,但我知道这个是有效的。)
您的最小可行的ws服务器代码也很简单。
const WebSocket = require('ws');
...
const wss = new WebSocket.Server({ port: 8090 });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.log('received: %s', message);
});
ws.on('ping', function ping() {
ws.pong();
}
ws.send('hey there client!');
});
注意:浏览器安全性不允许您在浏览器和服务器之间混合连接模式(https / http)。因此,如果您的前端剩余部分是通过https:提供的,则需要使用wss:而不是ws:。这在服务器端有点难以设置,但仍然可以按照相同的方式工作。
另外请注意,我没有提供任何错误或超时处理。生产代码需要这些内容。