使用 Express 处理 Websocket 连接和请求
websocket ws npm 模块 是 Node.js 中事实上的 库 。 它 内置了对 Node.js 原生的支持 http
服务器 。 但遗憾的是,很少有开发人员直接使用 Node 内置的 HTTP 包,他们通常使用 Express 。
将 ws 包与 Express 集成起来很容易。 还有一个 npm 上 ,但我从未设法让该模块工作。 下面介绍如何使用 ws 包在 Express 服务器上侦听 websocket。
使用 Express 监听 Websocket
ws 包支持本机 Node.js HTTP 服务器。 方便 快捷 listen()
函数 返回本机 Node.js 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);
});
});
测试
您如何实际连接到该服务器? ws 也有一个 websocket 客户端实现 以及服务器实现。
const ws = require('ws');
const client = new ws('ws://localhost:3000');
client.on('open', () => {
// Causes the server to print "Hello"
client.send('Hello');
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 在 Express 中提供静态文件访问
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论