问题标签 [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 回答
4331 浏览

node.js - NodeJS 中的客户端 websocket 证书

我有一个 NodeJS websocket 客户端应用程序,使用ws https://www.npmjs.com/package/ws - 这个 NodeJS 应用程序作为客户端连接到 websocket 服务器。

我可以通过指定wss://为协议来使用 HTTPS。

如何使 TLS 连接使用客户端证书进行身份验证?

即 websocket 客户端应该使用证书向服务器证明其身份。

0 投票
1 回答
166 浏览

javascript - 发出新的 websocket 请求时取消当前的 websocket 处理

我正在使用 npm ws 模块(或实际上称为包装器isomorphic-ws)进行 websocket 连接。

NPM 模块:同构-ws

我用它从运行在同一台 PC 上的 websocket++ 服务器接收一些数组数据。然后处理此数据并显示为一系列图表。

现在的问题是处理本身需要很长时间。我使用一条消息来计算 16 个图表,对于每个图表,我需要计算大量对数和其他慢操作以及 JS 中的所有这些。嗯,整个刷新操作大约需要 20 秒。

现在我实际上可以忍受这一点,但问题是当我收到一个新请求时,它会在整个消息处理程序完成后处理。如果我同时收到几个请求,所有的请求都会在它们进来时被处理。所以请求在那里排队,随着时间的推移,当前状态变得越来越过时......

我想有一种方法来检测是否有另一条消息等待处理。如果是这种情况,我可以随时停止当前处理程序并重新开始......所以在使用时npm ws,有没有办法告诉有另一条消息等待处理?

谢谢

0 投票
1 回答
3025 浏览

ssl - Websocket 服务器的自签名证书的“公用名无效”

我正在尝试运行此webrtc 客户端/信令服务器代码,但是在使用按照本教程的说明创建的新自签名证书运行服务器后,我chatclient.js无法连接到套接字服务器:

这是 chrome 控制台显示的错误:

然后我从 chrome 转到https://0.0.0.0:6503/(服务器正在侦听端口 6503),这是 chrome 检查器的安全选项卡:

在此处输入图像描述

我猜我需要在生成 ssl 证书期间设置正确的公用名,我目前将其设置为0.0.0.0:6503.

我应该设置什么?因为这是一个 websocket 的地址,我不知道该写哪一部分?

0 投票
0 回答
525 浏览

javascript - Websocket关闭事件不会在服务器上触发 - node.js

我在 nodejs 应用程序中使用 ws Plugin 来实现 web-socket。

当我从客户端关闭 ws 连接时,应该调用 ws close 事件。它在本地工作,但不能在服务器上工作。

这是示例代码:

0 投票
0 回答
318 浏览

javascript - 如何在使用 ws npm 模块的 javascript 中使用 ws.send() 时发送 EOF

我正在使用 ws npm 模块创建 websocket 客户端并使用 send() 方法将大数据流发送到 websocket 服务器

我很困惑如何让服务器知道客户端已经发送了所有数据并且服务器可以开始处理,即如何从客户端发送 EOF?

这是我的服务器:

这是我的客户代码:

我只是将 streamData 从客户端发送到服务器,并且我正在将数据从服务器回显到客户端。

我想知道如何将 EOF 从客户端发送到服务器,以便服务器知道它已收到所有数据并可以对数据进行一些处理。

提前致谢

0 投票
0 回答
130 浏览

node.js - Web socket 在其他机器上打不开

Web 套接字连接错误

我的服务器有问题。它使用expressexpress-ws用于网络套接字。问题是该服务器在本地主机上运行良好。ssh但是当我在(参见localhost.run )的帮助下运行它并通过另一台计算机(通过 Chrome)的给定链接访问该站点时,Web 套接字没有打开,并且下一个错误显示在控制台中

main.js:12 WebSocket connection to 'ws://localhost:3000/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

即使我添加了certkey服务器连接。PS该站点也加载了,只是套接字不起作用。


这是 server.js 代码:


这是router.js:

它将处理流程重定向到 controller.js 的下一部分:

最后一段代码就是它在服务器上的作用,不用太在意。问题是当我从另一台计算机输入链接时,网络套接字没有打开。我该如何解决?

0 投票
0 回答
11 浏览

websocket - 是否可以先创建一个 WebSocket 对象,然后设置处理程序,最后连接?

目前我的代码如下所示,因为在调用 WebSocket 构造函数时会启动 WebSocket 连接。

这对我来说有点乱。是否可以重写它以便我首先创建一个 WebSocket 对象,然后设置处理程序,最后连接?就像是:

0 投票
0 回答
38 浏览

ssl - 通过具有相互 SSL 身份验证的 WS 访问 EJB

我的问题的背景是:

配置安全性以通过 WS 访问 EJB -- WFLYEJB0364 连接被拒绝

我按照教程为使用 Elytron 的 SSL 安全 EJB 配置了 Wildfly:

如何在 WildFly 上配置 SSL/HTTPS:

http://www.mastertheboss.com/jboss-server/jboss-security/complete-tutorial-for-configuring-ssl-https-on-wildfly

使用 Elytron 的 SSL 保护 EJB

http://www.mastertheboss.com/jboss-server/jboss-security/ssl-secured-ejb-with-elytron

为了执行相互 SSL 身份验证,但没有成功。如何通过相互 SSL 身份验证通过 WS 配置 EJB 访问?

0 投票
0 回答
747 浏览

node.js - Websocket 服务器内存泄漏:大消息

我在 nodejs 中有一个使用 npm ws 的简单 websocket 服务器(行为与 npm websocket 相同)。我有一个 .NET 核心后端直接与 ws 服务器通信,提供一个反应前端并以高达 50Hz 的频率发送 30-60KB 消息

我的应用程序旨在能够一次监控多条消息。当我添加对这些消息的订阅时,节点服务器的内存使用量增长得非常快,并且与我添加的消息数量一致(消息越多,增长越快)。但是 websocket 服务器或 websocket 对象似乎在消息缓冲区上挂了很长时间。

通过添加 5 条以上的消息并等待几分钟,我可以为服务器建立多达几 GB 的内存使用量。当我停止消息时,内存使用量停止增长,但仍然好像 wss 将所有内容都保存在内存中。我还尝试清除 ws 对象的可写状态(已注释掉),但这会导致客户端连接出错。有没有办法可以安全地清除这些缓冲区以保持足够低的内存?(请注意,对于 50Hz 信息,无论如何将它们保存在缓冲区中很长时间是不合适的,因为流传输速度非常快)

0 投票
0 回答
332 浏览

html - 用于 android 浏览器的本地网络上的安全 webSocket

我正在尝试在我的本地网络上运行一个通过 websocket 连接到服务器的网络。当我从为网络服务的同一台机器(本地主机)上测试它时,它工作正常,但是当我尝试从我的 android 手机使用 chrome 访问网络时,我得到“net::ERR_CONNECTION_REFUSED”。似乎 chrome 拒绝了所有与未认证的本地主机的连接。

我已经安装了一个自我认证,希望使用安全的 websockets 和它可以工作的认证......现在我可以从 localhost 作为 https 访问,但如果没有得到“此连接不受信任”,我无法从其他设备访问

有什么方法可以创建一个经过认证的本地网络,我可以从其他设备浏览到https://192.168.0.x(服务器 IP)并使用 websockets 或安全 websockets?

我愿意阅读其他解决方案,其中 websockets 从 android 浏览器在本地网络中工作。