问题标签 [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 投票
2 回答
1213 浏览

react-native - 无法使用在 Expo 中运行的 React App 远程连接到 WebSocket 服务器

我在尝试在 React Native 应用程序客户端(在 Expo 中运行)和 NodeJs 服务器之间建立 WebSocket 连接时没有成功,使用双方的“ws”websocket 库。

我已经设置了 WebSocket 服务器,在输入 IP 地址和端口(例如“ws://192.168.208.1:8080”后,我可以使用 chrome 扩展 websocket 客户端成功连接到该服务器。

我已经在应用程序中设置了客户端代码,但它无法连接到服务器!但是,我可以毫无问题地连接到 Websocket echo url 'wss://echo.websocket.org/' 并向其发送消息!

所以代码在测试用例的两边都正常工作,看起来远程连接有问题。

健全性检查 1. 两台设备都在同一个 wi-fi 网络上 2. 我在禁用防火墙后尝试连接

客户代码:

0 投票
0 回答
414 浏览

node.js - 在 Nodejs 中跟踪 WS 客户端

ws通过一个 express 插件使用,express-ws. 我的后端需要跟踪客户,并且只向特定的或客户发送消息。现在,我只是将客户端套接字与令牌一起保存。因此,当客户端连接时,客户端会发送如下消息:

{"path":"/openUserSocket","token":"<CLIENT_TOKEN_VALUE>"}

这会在后端注册一个套接字。套接字由一个类管理,该类wscManager将套接字保存在一个普通对象中。所以,要注册一个套接字,我这样做:

现在,正如我在上面的代码中所示,我正在尝试保存套接字以供以后使用。set只需将令牌用作将套接字对象保存在另一个对象中的键。稍后,get(token)可以与那个令牌一起使用套接字。我还扩展了 express 应用原型以允许其他路由句柄使用wscManager

现在,我的问题是这是正确的客户跟踪方法吗?在其他路由处理程序中,管理器的使用方式如下:

感谢您的时间和耐心。

0 投票
1 回答
7902 浏览

node.js - 测试 WebSocket 时如何阻止 Jest 挂起?

我在 node.js 中创建了一个应用程序,它使用服务器上 NPM 的“ws”包为我提供了一个 WebSocket 接口。现在我想用 Jest 测试这个接口。测试运行成功,但 Jest 没有退出并给我错误:

测试运行完成后一秒钟,Jest 没有退出。

我阅读了文档,发现我必须在测试中使用该done参数并在测试完成时调用它。

服务器将在函数中启动并在Jest 给出的beforeAll函数中停止。afterAll

我希望测试完成后 Jest 会成功停止。

0 投票
1 回答
767 浏览

javascript - Javascript WebSocket服务器未收到消息

我制作了一个非常简单的 WebSocket 应用程序来学习基础知识,我取得了一些成功,但我遇到了一个我似乎无法解决的问题,主要是因为我没有收到任何错误。

客户:

服务器:

当我打开浏览器窗口时,服务器成功记录“新连接”,但是当我尝试通过按钮#sendbtn 向服务器发送消息时,服务器没有任何反应,它不会记录消息。

我直接从文件 API 运行它,即不在 XAMPP 上,这可能是这里的问题吗?感谢您的任何建议!

0 投票
1 回答
81 浏览

php - 将数组从 Python 发送到 PHP

我正在尝试使用 Python 使用在 PHP 中创建的 WSDL。

服务片段:

客户:

但是在运行时,以这种方式发送参数是行不通的,不像在 PHP 中使用客户端发送参数的方式是正确的'numbers' => array (1, 2, 3)并且可以正常工作。

0 投票
1 回答
992 浏览

java - ESP8266 上的 Websocket 客户端不向 spring-boot 服务器发送数据

我有一个带有 ESP8266 和 Spring Boot 服务器的简单项目。我想通过 websocket 将数据从 ESP 发送到服务器。

在 ESP 上,我使用这个库来创建 Stomp 客户端:https ://github.com/ukmaker/StompClient

Spring Boot ws 配置:

WS控制器:

ESP8266:

我没有任何错误消息。它只是不发送任何数据。

0 投票
1 回答
900 浏览

ios - 我正在尝试连接我的实时服务器。在 iOS 中出现连接被拒绝错误

我正在尝试连接我的实时服务器以进行 Web 套接字连接。但是我在 iOs 中遇到了错误。

websocket已断开连接:可选(错误域=NSPOSIXErrorDomain Code=61“连接被拒绝”UserInfo={_kCFStreamErrorCodeKey=61,_kCFStreamErrorDomainKey=1})

我已经尝试过使用其他服务器,但它可以使用它。只是没有在我的代码中使用指定的服务器。两台服务器都有 https。

这是我的 iOS 源代码链接: https ://www.dropbox.com/s/v348vxxjf74dsds/websocket.zip?dl=0

请找到以下服务器端代码:

0 投票
0 回答
90 浏览

node.js - 如何识别 websocket 连接来自哪个会话?

我正在开发游戏。每个玩家都有一个会话,登录后我会保留他的名字。登录后,每个玩家都通过 websocket 连接。如何将播放器会话绑定到 websocket?我想确保每个玩家会话只能同时打开一个 websocket,如果他打开另一个(例如在新标签中)我关闭前一个。

如果我在本地主机上运行应用程序,一切正常。来自 post 的 req.sessionID 与 websocket 中的 req.sessionID 相同。

但是,如果我将应用程序放在服务器上,会话会有所不同。在 verifyClient connect.sid 的 info 对象的标头中不存在。

我该如何解决?

0 投票
0 回答
741 浏览

node.js - 如何将 websocket 与具有快速会话和护照的用户相关联?

我的目标是将消息发送到属于用户的套接字,因此用户只能看到他们的信息或他们的用户角色。

到目前为止,我已经尝试了来自ws github和旧 SO 问题的示例代码。这个想法是将 express-session 解析器对象传递给 Websocket.Server verifyClient 函数。然后当创建一个新的套接字时,我可以将会话信息与套接字相关联。我的问题是当一个新的套接字连接时我没有看到任何护照用户,所以我一定犯了一个错误。

以下是带有会话信息的请求部分:

这是我尝试与 websockets 共享会话的方法:

编辑,护照代码添加如下:

0 投票
1 回答
64 浏览

node.js - 使用 Windows 凭据的 Node.js Websocket

我正在尝试创建与使用自签名 SSL 证书的服务器的安全 websocket 连接。我已将它们作为受信任的证书添加到我的 Windows 机器中,但是当我运行 node.js 应用程序时,我仍然得到 SELF_SIGNED_CERT_IN_CHAIN。经过一番挖掘,我发现 node.js 默认不使用 Windows 证书。我怎样才能让它使用 websockets 的 windows 证书?我正在使用“ws”模块。