问题标签 [uwebsockets]

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 回答
2493 浏览

node.js - µWebSockets 编译失败,没有预编译的二进制文件

我正在尝试在 linux 机器上使用 nodejs 和uws运行本地 websocket 服务器。npm install uws运行没有任何错误,我可以在我的node_modules. 但是当我尝试使用以下代码创建 websocket 服务器时。它给了我错误

这是我的js代码:

我查看/home/suresh/browserstack/node_modules/uws/uws.js:40并发现由于缺少uws_linux_48文件而导致本机功能失败。以下是添加的打印错误日志语句:

我在互联网上搜索并发现了一些 github 问题和评论,但它们没有帮助。

这是我的系统信息:

提前致谢

0 投票
1 回答
1264 浏览

c++ - 如何优雅地停止 uWebSockets 服务器?

run()在官方示例中如何退出通话?例如在收到信号后。

0 投票
0 回答
389 浏览

c++ - 如何使用 uWebSockets 主动向客户端推送数据?

uWebsockets c++

我想主动将数据从服务器发送到客户端。我应该怎么做?

0 投票
1 回答
2137 浏览

socket.io - 带有 istio 的 GKE 上的 websockets 给出了“没有健康的上游”和“CrashLoopBackOff”

我在 GKE 上使用 Istio 版本 1.0.3 。我尝试让我的 express.js 与 socket.io(和 uws 引擎)后端与 websockets 一起使用,并且之前在带有 websockets 的“非 kubernetes 服务器”上运行这个后端没有问题。

当我简单地输入 external_gke_ip 作为 url 时,我得到了我的后端 html 页面,所以 http 可以工作。但是当我的客户端应用程序从我的客户端应用程序进行 socketio 身份验证调用时,我在浏览器控制台中收到 503 错误:

当我在进行套接字调用时输入 external_gke_ip 作为 url 时,我得到:no healthy upstream在浏览器中。豆荚给出:CrashLoopBackOff.

我在某个地方找到:'在 node.js 领域,socket.io 通常会在最终升级到 Websocket 之前与服务器进行一些非 Websocket 握手。如果你没有粘性会话,升级永远不会奏效。所以也许我需要粘性会话?或者不是......因为我只有一个我的应用程序的副本?似乎是通过设置来完成的sessionAffinity: ClientIP,但是使用 istio 我不知道如何做到这一点,并且在 GUI 中我可以编辑负载均衡器的一些值,但会话关联显示为“无”,我无法编辑它。

其他可能相关但我不确定的设置(如何使用 istio 进行设置)是:

  • externalTrafficPolicy=本地
  • TTL

我的清单配置文件:

各种输出(在进行套接字调用时,当我停止这些部署重新启动并且 READY 返回到 3/3 时):

$ kubectl describe pod/myapp-8888给出:

和:

并且数据库日志(看起来不错,因为可以使用 psql 检索来自应用程序的一些“启动脚本条目”):

编辑:这是对我的应用程序的 503 次 websocket 调用的服务器端日志:

在浏览器中,起初它似乎正确地切换了协议,但随后导致重复的 503 响应,随后的健康问题导致重复重启。协议切换 websocket 调用:

一般的:

响应标头:

请求标头:

它的框架: 在此处输入图像描述

按照上述内容,我得到了其中的多个:

关于 websocket 调用的 Chrome 输出:

一般的:

响应标头:

请求标头:

框架:

0 投票
1 回答
712 浏览

c++ - 从另一个线程向 uWebSockets 0.15.x 套接字发送数据

我正在使用 uWebSockets 版本 0.15.x 来接受和管理服务器上的 Web 套接字连接。我有一个线程调用 uWS::TemplatedApp::run 来处理这个问题。

我需要从另一个线程向所有打开的 Web 套接字发送数据。我的理解是 uWebSockets 不是线程安全的。推荐的方法是什么?

(0.14.x 的 uWebSockets 用户手册讨论了 uS::Async,但是这个类在 0.15.x 中消失了。从当前文档中不清楚等效的内容。)

0 投票
2 回答
4840 浏览

c++ - 如何修复 OSX 中的“致命错误:找不到‘sys/epoll.h’文件”?

由于本指南,我试图在 MacOs Xcode 中链接 uWebSocket https://medium.com/@tabvn/c-how-to-linking-uwebsocket-in-macos-xcode-9-ef3ffea880e4但是,当我尝试安装时uWebSocket,我收到错误 EpollEvent.h 未找到!有人可以帮我吗?

0 投票
1 回答
2961 浏览

node.js - 通过 uWebSockets.js 和 Websocket-Sharp 使用 websocket 压缩

我们有一个使用 websocket 进行连接的手机游戏。服务器是使用uWebSockets.js库的 Node.js 应用程序,客户端是使用Websocket-Sharp库的 Unity 应用程序。他们俩一起玩得很好,我们没有遇到他们的问题。

最近我们想启用websocket 压缩。两个库都表示它们支持 Per-message Compression 扩展,但似乎有一些与它们不兼容的东西。因为当我们配置为使用压缩时,websocket 连接会在握手时立即关闭。

我们还使用ws库测试了客户端,它提供了具有相同结果的压缩示例。我们尝试修改 ws 压缩选项,发现当我们评论 serverMaxWindowBits 选项(默认为协商值)时,可以建立连接并且发送和接收消息没有问题。我们还询问了如何控制 uWebsockets 中的 serverMaxWindowBits。

我们尝试的最后一件事是连接一个最小的 uWS 服务器和 websocket-sharp 客户端。这是服务器的代码:

这是客户端代码:

当我们运行服务器和客户端时,客户端发出以下错误:

错误|WebSocket.checkHandshakeResponse|服务器尚未发回“server_no_context_takeover”。致命|WebSocket.doHandshake|包含无效的 Sec-WebSocket-Extensions 标头。

似乎客户端期望 server_no_context_takeover 标头并且没有收到。我们查看了uWebsockets源代码(uWebsockets.js 模块的 C++ 部分),并发现了一个用于发送回 server_no_context_takeover 标头的注释条件。于是我们取消了条件的注释,构建了uWebsockets.js,再次测试在客户端遇到如下错误:

WebSocketSharp.WebSocketException:无法从流中读取帧的标头。

有什么建议可以让这两个库一起工作吗?

0 投票
2 回答
446 浏览

c++ - 无法使用 glibc-2.17 在 CentOS 7 上运行 uWebSockets

CentOS 7 的最新glibc版本是 2.17。我知道 CentOS 8 的最新版本是 2.30 但我无法升级,因为我的 VDS 依赖于主机的机器内核(非常旧)。

有什么方法可以运行/编译它glibc-2.17或更新它glibc吗?

编辑:我的内核版本是2.6.32-042stab141.3.

我可以构建它并安装到/opt/glibc-2.18没有错误,但是当我尝试使用它时,我看到了Segmentation fault错误。

PS 我用相同的 OpenVZ 内核在 Fedora 23 上成功构建了它。

0 投票
1 回答
1830 浏览

c++ - 使用 CMake 在 Windows 10 上构建 uWebSockets

我想在我的 C++ 项目中使用uWebSockets (UWS) 通过网络传输图像。该设置将在多个操作系统上运行,因此创建构建文件的最佳方式似乎是使用 CMake。

但是,我是 CMake 的新手,很难构建 UWS。我不明白如何开始在 Windows 10 上使用官方存储库,所以我找到了另一个存储库,其中包含一个CMakeFiles.txt文件和一些依赖项(openssl、zlib、libuv ,但由于某种原因它不包括uSockets )。CMakeFiles.txt包括:

它看起来很简单,但是当我尝试运行时mkdir build && cd build; cmake ..,它找不到OpenSSL. 这是它吐出的错误消息:

上面的错误消息表明我需要为每个库设置一个配置文件。但是,如果我正确理解了find_package文档,该命令本身会在根文件夹下的各个位置搜索库。需要什么样的文件夹结构find_package才能工作?

更一般地说,我是否在这个替代回购上浪费时间?有没有更好的方法在 Windows 10 中使用 UWS?官方回购有一个关于如何在 Windows 上使用它的问题,但我不明白这是如何回答这个问题的。它仅指向此页面,其中表示将不正式支持任何特定的构建系统。

任何帮助,将不胜感激。

0 投票
3 回答
1059 浏览

go - 基于“广播”或“房间”的 Websocket 策略

基于“房间”的 WebSocket 连接或 WebSocket 中的“广播”选项背后的技术或策略是什么?

我们是否将“用户的 WebSocket 连接 ID”存储在基于房间的聊天系统的特定列表中?在发送时,我们是否使用 for 循环向每个参与者/WebSocket-Connection-ID“发送/接收”消息,或者我们是否有一个 API 可以在不使用循环的情况下一次性向所有组用户发送消息?

我正在使用“大猩猩 WebSocket” - https://github.com/gorilla/websocket

for loop如果我们将 WS 连接 ID 存储在一个列表中,那么如果任何房间增加了 5000 个参与者,那么运行一个为每个参与者发送/接收消息将变得非常麻烦。

请不要共享任何库,我想了解基于房间的聊天系统如何工作或在后端运行