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

node.js - 我需要一个函数来检测有多少连接来自同一个用户代理

好的,所以人们一直在使用我的多 ogar 编辑服务器(就像 agar.io 私人服务器),我注意到他们都使用相同的用户代理。如何使用 ws 检测来自同一个用户代理的连接数,以便阻止它们?

就像是

0 投票
1 回答
3877 浏览

node.js - Nodejs ws 模块:TypeScript 中的心跳

我目前正在使用 TypeScript 在 NodeJs 上运行 WebSocket 服务器。作为 WebSocket 服务器实现,我使用的是ws。除此之外,我使用@types/ws包进行打字。我希望服务器定期向每个连接的客户端发送一个 ping 包。ws 模块的自述文件已经在 J​​avaScript 中提供了一个示例实现,我也想使用它。您可以在此处找到示例实现:

我面临的问题是示例实现将“isAlive”属性添加到套接字对象中,我显然无法在 TypeScript 中执行此操作,因为套接字类不存在“isAlive”属性。

我的问题:将此属性添加到套接字类的最佳方法是什么?由于我将这些套接字对象作为参数传递,因此我想避免向我的所有文件添加某种额外的导入,这些文件以某种方式与套接字一起工作。

我想避免为此将套接字对象类型转换为任何对象。

我尝试围绕 ws 实现一个包装类,这样我就可以实例化我的 WebSocket 类并在整个应用程序中使用它。

我的课看起来像这样

编辑

正如评论者所提到的,我尝试了声明合并。我创建了一个名为“Augment.ts”的新文件并添加了以下代码:

在包含我的 WebSocketServer 类的文件中,我添加了 Augment.ts 文件的导入,如下所示import "./Augment":结果是另一个错误消息(但以某种方式说明相同?): Property 'isAlive' does not exist on type 'import("c:/path/to/project/node_modules/@types/ws/index.d.ts")'.ts(2339)

0 投票
1 回答
823 浏览

java - 如何将数据客户端发送到服务器 django 通道

大家好,我正在尝试使用 websocket 将数据 js 发送到 django 但无法正常工作你能帮我看看我哪里做错了吗?

ps:我能够将数据从服务器发送到客户端

错误:

raise ValueError("没有用于传入 WebSocket 帧的文本部分!")

传入的 WebSocket 框架没有文本部分!

WebSocket 断开/ws/ [127.0.0.1:64282]

js

消费者.py

0 投票
2 回答
455 浏览

javascript - webscokets 如何连接到集群内正确的子进程?

我试图弄清楚 websockets 如何在 Nodejs/PM2 集群中工作。

我刚刚通过使用 PM2 启动 4 个子进程进行了一个实验,然后从客户端我向所有 4 个套接字服务器(每个子进程中运行 1 个 ws 服务器)发送了多个 webocket 消息。我没想到的一件事是 Node 能够确定套接字属于哪个进程,因此客户端发送的每条消息都由正确的子进程进行控制台记录。

那么这种行为是由 Nodejs 在内部由集群模块管理的吗?这似乎也是自 Node 12 以来的一个新功能?我可能错了...

代码参考(ws模块使用tsl):https ://github.com/websockets/ws/blob/master/lib/websocket.js#L663

PS:在写答案之前,请检查我写给其他人的评论...

0 投票
1 回答
530 浏览

node.js - PM2 集群中的 Websockets,在生产中好吗?

在投入生产之前,我们要确保这是“符合预期的行为”。

我通过使用 PM2 集群启动 4 个子进程(我的机器上有 4 个内核)进行了一项实验。这意味着有 4 个 websocket 进程正在运行......

然后在客户端我创建了多个套接字,并向服务器发送了许多消息。我没想到的一件事是 Node 能够弄清楚套接字属于哪个子进程,这意味着客户端发送的每条消息都由正确的子进程进行控制台记录。

集群中的主要工作人员似乎在跟踪哪些套接字属于哪里。

那么这是由 Nodejs 在内部由“集群”模块管理的吗?这也可以在生产中使用吗?


PS对于 websockets 我们使用 Nodejs 的“ws”模块

0 投票
1 回答
45 浏览

scala - 获取过滤后的 JSON 值 Scala Play

我使用 scala play 并使用 WS 从 URL 获取响应。

我的 JSON 示例:

我只想获得“对象”等于“002”的“标准”字段。因此,在此示例中,值为“STANDA”。

一个测试:

我怎么能做到这一点?

谢谢你的帮助。

0 投票
1 回答
1370 浏览

java - 端点无法解析为类型(ws 中的@Endpoint)- Eclipse 编译错误

这有点奇怪,或者可能是我遗漏了一些东西。

我正在使用 Spring Boot 应用程序发布 SOAP 端点。下面是 pom.xml 文件

根据教程,我们只需要 wsdl4j 依赖项即可发布 SOAP 端点。

下面是我的端点类 -

这尽可能简单,但是 eclipse 显示编译错误并且不将 @Endpoint 注释解析为

编译错误

可能是什么问题,我错过了什么?

0 投票
0 回答
144 浏览

nginx - 如何配置在 Kubernetes 中运行的 Nginx WSS

我有一个在 Kubernetes 中运行的 Nginx pod,作为节点端口服务公开。
default.conf


服务器中的 Nginx:
ws 和 wss 都在工作(wss 在没有任何 ssl 证书的情况下工作)

Pod 中的 Nginx:
ws 正在工作 wss 不工作(wss 给出握手错误)

预期结果:wswss
都在 kubernetes 中使用 nginx

0 投票
1 回答
234 浏览

java - java spring ws: webServiceTemplate.marshalSendAndReceive 发送前签署文件

我正在尝试在发送文档请求之前对其进行签名,但是当通过检索请求文档Document doc = soapMessage.getSOAPPart().getEnvelope().getOwnerDocument();并将其传递给将对其进行签名并使用签名节点更改文档的签名方法时,我得到的响应是org.springframework.ws.soap.client.SoapFaultClientException: Validation failed with digest wrong.

但是,当我使用断点调试代码并doWithMessage在之前的任何行中设置方法内部的断点(在下面的代码片段中将其替换为 lambda 表达式)时certificationService.signDocument(doc, actionName, "Request", company);,我收到了正确的响应,正如预期的那样。

我错过了什么或什么,因为我在网上找不到任何类似的问题。我被困在这里...

片段代码如下:

0 投票
1 回答
540 浏览

node.js - 我们如何捕获来自 Nestjs 网关(websockets)的升级 http 请求

为了在 NestJS 中手动实现使用 websockets 的身份验证过程,我使用的是 NestJS 网关,但是在为 websocket 连接之前的握手期间发送的“升级”http 请求设置处理程序时遇到了麻烦。有没有办法在某处设置一个功能,使我能够捕获这个请求,以便我可以尽快拒绝访问?

这将允许更快地停止进程,并且如果 http 请求中没有有效的身份验证令牌,则无法打开任何套接字。我发现我可以使用 websocket 实例的协议字段来验证套接字(客户端只是在 websocket 连接上设置第二个参数),但我更喜欢不必处理“坏”套接字在连接后关闭并停止他们通过http进行初始握手,无论过程如何。