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

javascript - 通过 Node.js ws websockets 中的某个通道发送消息

我想使用 websockets 在前端和后端之间创建双向通信。我正在使用 Node.js ws。使用

我可以使用我称之为“消息”标签的方式向所有客户发送消息。使用 Chrome 开发人员工具,我可以看到发送了一个带有 ON_MESSAGE 事件的 ws 数据包。

我想使用另一种标签,但是我找不到有关如何执行此操作的文档,也找不到任何可以解释执行此操作的方法的内容。我尝试了以下类似的方法,但没有成功。

0 投票
1 回答
598 浏览

node.js - 如何使用 websockets/ws lib 限制 Websocket 连接的数量?

我想将最大 WS 连接数硬限制为 100。我正在编写一个 node.js 服务器,我不应该允许超过 100 个连接。

如何在触及系统ulimit的情况下限制 Websocket 连接数?

0 投票
2 回答
1077 浏览

express - 服务器发送事件和 Ajax VS Websockets 和 Ajax

我正在创建一个应用程序( ),但在确定将数据发送到 API( )和检索实时更新Nuxtjs的好方法时遇到了麻烦。expressjs看来我可以使用两个协议 [Server Sent Events( SSE) 和Axios/或 Websocket( WS)] 创建“bi-di”连接。

这两种技术都适用于大多数浏览器,所以我认为不需要添加额外的库,例如socket.io- 对于那些没有当前浏览器的人(太糟糕了)。

该应用程序基于表单数据/点击的用户输入。然后用该信息通知/更新其他用户。在这一点上,用户可以响应并且链继续(基本的聊天,如流程,一些信息将被快速交换,而有些可能不会或永远不会)。

以我的经验,用户流将更多地依赖于侦听更改而不是实际更改数据 - 因此我正在考虑SSE不幸的是,这两种协议都有其缺陷。

网络套接字:

  1. 并非所有组件都需要WS获取/发布信息,因此以额外的服务器费用升级基本 http 连接是没有意义的。因此需要另一种方法WSAxios/SSR)。Example: Checking to see if a user name exists
  2. 安全防火墙可能会阻止WS正常运行
  3. express-ws使 API 端的套接字变得简单
  4. 我相信一个用户可以拥有超过 6 个并发连接(可能是赞成和反对)

服务器发送事件

  1. 似乎技术正在衰落,有利于WS
  2. 监听事件似乎和监听事件一样简单WS
  3. 无需升级连接,但必须node-spdy在API 中使用 -由于多路复用expressjs,这也可能是一个很好的实现WS
  4. 更多的后端代码来设置http2和发出SSEs(丑陋的代码也是如此 - 所以将制作函数)
  5. 仅限于 HTTP 限制(6 个并发连接),这是一个问题,因为用户可以轻松地将其最大化(即打开多个聊天窗口)

TLDR

该应用程序将更加以“供稿”为导向,偶尔发布(可由 处理Axios)。但是,用户将收听多个“提要”,HTTP 限制将成为问题。我不知道解决方案是什么,因为SSE似乎是更好的选择,因为我不需要不断握手。如果这次握手真的无关紧要(从我读过的所有内容来看并非如此),那么WS可能是一个更好的选择。不幸的是,关于这两者的信息有太多相互矛盾的信息。

想法?

0 投票
1 回答
181 浏览

wcf - 带有 TransportWithMessageCredential 的 WCF 是否使用 SSL?

我正在客户端和服务器之间的 Intranet 中配置 WCF 服务。

我已经为带有 TransportWithMessageCredentia 的 wsHttpBinding 设置了它,但没有证书身份验证。

我是否更正了该服务现在使用 ssl/tls 并加密消息?

这是安全的还是我也需要使用证书?

0 投票
1 回答
134 浏览

php - “img”标签如何显示正在运行的视频(很想知道)

没有响应img 标签显示来自我的移动摄像头的实时视频,但响应为空。那么这是如何不断获取数据的呢?我附上了这段视频片段,请检查以查看确切的情况。谢谢你 ! img 标签

视频片段

0 投票
2 回答
1337 浏览

javascript - nodejs ws 库——如何防止暴力攻击(密码和崩溃)

我正在尝试使用 NodeJS 制作一个应用程序,该应用程序在很大程度上取决于用户通过浏览器中的典型 WebSocket 协议连接到它,我在 nodeJS 中为此使用 ws 库。

实际的应用程序工作正常,我可以断开任何用户(如果我可以检测到当前 IP 地址已经连接),并使用用户名和密码授权它(所有在服务器端处理,之后他们通过 websocket 发送用户名和密码,我什至可以在服务器端设置一个计时器,以防止客户端强制服务器尝试使用用户名和密码进行授权);但是,我还没有找到一种方法来阻止连接发生

我的意思是什么?例如,在客户端,某人可以打开他们的 javascript 控制台并简单地输入如下内容:

并简单地让它继续下去,很快整个服务器将完全被封锁和/或因来自同一客户端的大量持续连接而崩溃。

所以,虽然我可以在用户尝试连接后断开连接(例如,如果我检测到它已经连接到同一个 IP 地址),但是我怎样才能阻止某人简单地发送持续连接和/或命令喜欢上面的代码?如何从一开始就完全阻止整个 IP 地址打开任何新连接?

0 投票
1 回答
19 浏览

java - 使用 Jersey 的 Java 服务不会部署到 Jboss

我正在尝试构建其他服务可以调用的 Java 服务。该服务不是 WS,而是调用 RestfulWS。

我真的只是围绕这个调用构建一个包装器。这将找到它需要的正确数据,为调用设置 JSON。获得响应并将其发送回来。

被告知为此使用泽西岛。尝试设置所有 pom.xml 以使用 Jersey。
构建代码工作正常,当部署到服务器时发生故障。我收到错误消息——“JBAS011232:只允许一个 JAX-RS 应用程序类。”

我没有 web.xml,我猜它是用来跳过一些 ResetEasy 文件的。我在 pom.xml 和 jboss-deployment-structure.xml 中有排除项。

部署发生时我仍然收到错误消息。不太确定还要检查什么。

0 投票
0 回答
69 浏览

javascript - ws 库连接翻倍

我有一个连接问题,我有一个快速服务器并创建一个ws传递快速服务器实例的实例,当我连接时,连接成功并尝试发送一条消息我可以收到一次消息,当我关闭连接并连接时然后再发送一条消息,消息现在发送两次,每次继续这样做,消息保持加倍,我在通道上的套接字只是一个连接,我认为它创建了一个新的过程?我怎样才能防止这种行为?

0 投票
1 回答
213 浏览

node.js - Nginx 子文件夹中的 Node.js 应用程序与 WSS 连接到同一服务器

在 Apache 服务器上管理我的 Web 项目多年后,我不得不使用 Nginx 将它们移动到新服务器上。我已经成功地迁移了所有这些,除了使用 websockets 的那个。

该项目是一个基于 web 的扫雷器,使用 websockets 与游戏服务器进行通信。该游戏可通过https://www.my.domain.com/minesweeper访问。在其 client.js 文件中,连接是通过行建立的const ws = new WebSocket('wss://www.my.domain.com:8081/')

服务器使用ws包,这是 server.js 文件的摘录,位于 web 文件夹之外:

游戏在以前的服务器上使用此配置,但我不记得是否必须编辑 Apache conf 文件才能使其工作。

现在,在新服务器上,我有以下配置文件:

如果没有任何附加配置,当我尝试通过其 URL 访问游戏时,websocket 请求不会返回预期的 101 响应代码。Firefox 还会触发“无法建立与 wss://www.my.domain.com:8081 的连接”错误。

基于关于 websockets 的官方 Nginx 教程和关于类似问题的其他 SO 答案,我尝试使用 proxy_* 参数的多种组合来编辑我的 Nginx 配置,但没有成功。

但是基于 websocket 服务器和 Nginx 服务器在同一个 IP 上的事实,并且 websocket 服务器正在监听 8081 端口,Nginx 服务器是否也应该监听 8081 服务器(如果我将配置编辑为这样做,Nginx 拒绝重新启动,因为 websocket 服务器已经在该端口上侦听,并且相反)?Nginx 真的是问题还是我错过了另一件事?

提前致谢 !

0 投票
0 回答
2704 浏览

c# - C# WebSockets-Sharp WebSocketSharpException:“无法从流中读取帧头”

我有一个可视化 C# 应用程序,它通过 WebSocket 连接到使用 Heroku 部署的远程 Node.js 服务器。

服务器使用 npm WebSocket 模块“ws”来创建一个 WebSocket-Server。

C# 客户端应用程序使用此 GitHub 存储库中的 WebSocketSharp 库:https ://github.com/sta/websocket-sharp创建连接到服务器的 WebSocket-Client。

这是必要的节点服务器 server.js 代码:

这是节点服务器 ApiHandler.js 代码

这是必要的 C# 客户端应用程序代码

所以它的工作原理是,当客户端更新服务器上的信息时,它会将更新的信息发送到服务器,然后服务器将更新的信息发送给除发送者之外的所有客户端。

当客户端从服务器接收到更新的信息时,它们会更新其本地副本以匹配从服务器接收到的数据。

问题是在客户端通过 WebSocket 连接到服务器大约一分钟后,客户端抛出 WebSocketException 并显示消息“无法从流中读取帧的标头”。

快速的谷歌搜索将我带到这个 GitHub 问题https://github.com/sta/websocket-sharp/issues/202。从上述链接:

“我们通过在 Ext.cs 中修改 ReadBytesAsync(this Stream stream, int length, Action completed, Action error) 设法完全修复它。我们注意到即使没有连接,'NetworkStream.EndRead' 也可以返回零 (0) 字节关闭。仔细阅读“EndRead”的文档只说当连接关闭时返回零字节。其他方式并不总是正确的,接收 0 字节并不总是意味着连接似乎正在关闭。这很常见即使连接没有关闭,也会返回零字节。在 Chrome 中偶尔会发生一次,而在 Firefox 中似乎更常见。因此,将:替换 if (nread == 0 || nread == length) 为: if(nread == length) 修复了问题。它确保当一个人在等待时两个帧字节一个真的得到两个字节。“。

但是在检查 WebSocket-Sharp 库中的代码时,上面引用的修复程序已经应用于库(该帖子来自 2016 年,因此它可能已被路径)。

2020年图书馆的代码:

另一个奇怪的事情是,当我在本地运行服务器并连接到它时,这个问题永远不会发生。只有当我连接到部署在 Heroku 上的远程副本时才会发生这种情况。