问题标签 [ws]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1063 浏览

node.js - NodeJS WebSockets (ws) 模块是否实现背压?

我正在使用该ws模块在 NodeJS 上实现 WebSockets 服务器。服务器应每分钟向所有客户端发送一次更新。我已经实现了这个,但我对它在客户端连接可能停止的情况下的功能有些担心。

我担心当与客户端的连接变为非活动状态时会发生什么,例如由于网络连接以不发送 TCP RST 或 FIN 的方式中断。

我有点惊讶于方法中没有使用关键字send()调用该方法。该方法是否只是将所有要发送的数据排队?如果套接字缓冲区已满,会以一种导致其他客户端饥饿的方式阻塞,而不是被阻塞的客户端怎么办?awaitasyncsend()send()

如果send()从不阻塞,如果数据排队,排队,排队......会发生什么?它可以使用不断增加的无限内存吗?

理想情况下,如果最后一次更新尚未完全发送,我想省略发送每分钟一次的更新。我可以通过ws模块实现这一点吗?

0 投票
1 回答
3370 浏览

node.js - 可以将异步函数作为 Websocket(ws) 侦听器传递吗?(node.js 和 ws 库)

我的 websocket 必须执行的大多数操作都是异步的,所以我将一个异步函数作为回调传递给 websocket 并在其中调用 await,这样做可以吗?如果不是,我还有什么选择?
编辑:这是我的消息监听器:

0 投票
0 回答
174 浏览

javascript - 让 Node.js websocket 客户端无限期运行

我正在使用ws库来处理客户端的 Websocket 连接。

这是来自ws文档的示例(https://github.com/websockets/ws#usage-examples):

问题是该程序仅在从服务器接收到第一条消息后退出。

如何让它运行并无限期地收听消息?

0 投票
1 回答
855 浏览

node.js - Express-Ws 关闭连接意外关闭

我正在尝试使用 express-ws 为 express 启用 websocket。我有两个快递服务器,都使用 ws。两个服务器的 ws 设置代码完全相同(路径名除外)。其中一台服务器按预期工作。另一个,一旦与退出代码 1005 建立连接就关闭。据我研究,我发现 1005 被描述为在意外断开连接的情况下返回的特殊错误代码。我尝试在 ws 路由处理程序中登录,但它什么也没打印。在“连接”处理程序也不会被触发。

如您所见,我实现了一种“心跳”技术,用于向客户端发送 ping 以保持连接处于活动状态。如前所述,它仅适用于其中一台服务器。我对为什么返回 1005 感到非常困惑。

编辑 1

在此帖子之后我尝试手动更新 express-ws 的 ws 包。这仍然没有解决问题,并且如前所述,连接仍然以 1005 断开。

0 投票
1 回答
77 浏览

node.js - 如何与 express 应用程序并行启动 websocket 服务器?

我有一个快速应用程序和一个 websocket 脚本。我创建服务器并在 www.js 文件中启动 express 应用程序。

我面临的问题是,我无法在 www.js 文件中实例化 websocket。

这是 www.js

这是 websocket.js

我知道该行const wss = new Websocket.Server({ port: 8080 });创建了 websocket 实例......但我希望能够在 www.js 文件中创建这个实例,并将 websocket 的所有逻辑创建在一个单独的文件中。

0 投票
0 回答
266 浏览

typescript - 重写现有的 websocket 以与 typescript 一起使用

无法将现有 ws 从 javascript 转换为 typescript。无法理解异步 socketHost 函数的返回类型是什么以及为什么我不能通过“this”关键字访问它们

这是代码:

错误:

套接字.ts

错误

在这一点上,我已经重写了整个应用程序并且我碰壁了,即使在看了 3 个小时的文档之后也不明白如何重写这部分。

任何帮助将不胜感激

0 投票
1 回答
331 浏览

javascript - 无法在反应客户端和快速服务器之间建立 websocket 连接

我正在尝试使用 websockets 在反应客户端和快速服务器之间建立连接。每次我尝试这个我都会得到一个错误。我想我错过了一些东西。

服务器代码:

客户端代码:

错误:

if (!this.options.verifyClient(info)) return abortHandshake(socket, 401); ^

TypeError:this.options.verifyClient 不是函数

0 投票
2 回答
288 浏览

javascript - Express 服务器没有响应请求

在向服务器发送一堆 POST/GET 请求后,我的服务器停止响应,并且在控制台的网络选项卡中,所有请求都标记为“待处理”。

我在响应过程中记录了时间戳,但它们运行得很快,一旦出现问题,它们就不会运行。

断绝:

发件人:

接收方:

我不知道为什么我的要求没有得到回应,如果有人可以提供帮助,那就太好了。

0 投票
1 回答
37 浏览

node.js - express-ws:如何避免在请求 url 上键入端口?

我已经使用 Node.js 和 wxpress-ws 成功创建了一个 WS 服务器。问题是我不知道要使用哪个端口而不是在请求 URL 中键入它。因此,我不需要使用ws://mysite.com::xxxx/,而是只需要输入ws://mysite.com/

我试过监听 80、8080 端口,但没有成功。

0 投票
0 回答
863 浏览

javascript - 如何使用 Node.js、ws 和 es6 类包装 WebSocket 服务器类?

我是 Node.js 的初学者。
最近想搭建一个基于es6-class的模块化系统。
我正在尝试将 ws 模块包装到一个类中,这是我的代码原型:

几个问题:
1.我想知道我的逻辑是否正确?
2.有没有一种简单的方法可以将'this'绑定到回调函数?

谢谢!