Node.js 中的 Websocket 服务器
Websockets 是浏览器客户端和服务器之间进行双向通信的工具。 websockets 的特别之处在于它们使服务器能够将数据推送到客户端,以下是如何在 Node.js 中启动 websocket 服务器。
使用 ws
ws
npm 包 是 Node.js 事实上的 WebSocket 库。 ws 包还包括一个 websocket 客户端,这对测试很有用。
下面是一个 WebSocket 服务器的基本示例,它跟踪所有打开的套接字并将入站消息发送到所有打开的套接字。 您可以将其视为一个简单的聊天服务器:当一个人发送消息时,服务器会将消息广播给所有收听的人。
const WebSocket = require('ws');
const server = new WebSocket.Server({
port: 8080
});
let sockets = [];
server.on('connection', function(socket) {
sockets.push(socket);
// When you receive a message, send that message to every socket.
socket.on('message', function(msg) {
sockets.forEach(s => s.send(msg));
});
// When a socket closes, or disconnects, remove it from the array.
socket.on('close', function() {
sockets = sockets.filter(s => s !== socket);
});
});
使用 ws 和 Express
上面的 ws 服务器必须有自己的端口:它不能监听与 Express 服务器相同的端口。 但是,您可以 使用 ws处理来自 Express 的 websockets,中所述收听 Express HTTP 服务器的 升级事件 方法是按照 ws 文档 。
const express = require('express');
const ws = require('ws');
const app = express();
// Set up a headless websocket server that prints any
// events that come in.
const wsServer = new ws.Server({ noServer: true });
wsServer.on('connection', socket => {
socket.on('message', message => console.log(message));
});
// `server` is a vanilla Node.js HTTP server, so use
// the same ws upgrade process described here:
// https://www.npmjs.com/package/ws#multiple-servers-sharing-a-single-https-server
const server = app.listen(3000);
server.on('upgrade', (request, socket, head) => {
wsServer.handleUpgrade(request, socket, head, socket => {
wsServer.emit('connection', socket, request);
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Node.js 中的 HTTP 服务器
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论