使用 Express 处理 Websocket 连接和请求

发布于 2022-07-06 13:02:25 字数 2218 浏览 849 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

红墙和绿瓦

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文