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

javascript - 如何使用 axios 从前端调用 uWebSockets http 路由?

我在我的 nodejs 应用程序上使用 uWebSockets,我正在尝试向 wss 服务器发送一些 http 请求。我可以通过从浏览器 url 栏访问 wss 服务器上的 GET 路由的输出来查看它们,但是当我尝试调用 PUT 、 POST 、 PATCH ......路由时,我没有得到任何输出(例如:没有响应,我想未到达路线)。

我的 uWebSockets.js 配置是以下代码片段:

从前端,我尝试发送这样的请求:

我做错了 websockets 请求吗?

我正在使用 18.04 uWebSockets.js 版本。

0 投票
1 回答
303 浏览

uwebsockets - 如何在 uWebSockets.js 中获取套接字路径?

在基于 uWebSocket.js 的服务器上,我使用的是参数化路径,例如/socket/:name.

如何捕获使用的实际路径?

例如,如果套接字连接到/socket/one,我希望能够提取one字符串,或者至少获取路径以便我可以手动提取路径参数。

0 投票
1 回答
95 浏览

c++ - uwebsockets 无法启动:libuv.c:-1: 错误:未定义对 `uv_is_closing' 的引用

我的项目已经链接了 uwebsockets。 链接库:

主文件

我有错误

35 个函数未定义,但我不能直接在 main.cpp 中调用这些函数。

操作系统:Windows10 x64

IDE:QtCreator4.14.2

编译器:MinGW 32 位

充满错误日志

11:04:53: 为项目rfid-cmd执行步骤... 11:04:53: 正在启动 "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build . --目标全部

[1/1 0.3/sec] 链接 CXX 可执行文件 rfid-cmd.exe 失败:rfid-cmd.exe cmd.exe /C "cd . && C:\Qt\Tools\mingw810_32\bin\g++.exe -g CMakeFiles/ rfid-cmd.dir/main.cpp.obj -o rfid-cmd.exe -Wl,--out-imlib,librfid-cmd.dll.a -Wl,--major-image-version,0,--minor -image-version,0 -LD:/Project/misc/qt/rfid-cmd/lib -LD:/Project/misc/qt/rfid-cmd/lib/NFC9 -lReader -lEasyUSB214x C:/Users/Sunway/。 conan/data/zlib/1.2.11 ///package/a955db98e980a5ab86ae50d6df8bfee361185c27/lib / libzlib.a C:/Users/Sunway/.conan/data/libuv/1.41.0///package /a955db98e980a5ab86ae50d6df8bfee361185c27/ libuv_a /。 C : /Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a -liphlpapi -lpsapi -luserenv -lws2_32 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32/&/. conan/data/usockets/0.7.1 ///package / c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a( libuv.o):libuv.c:(.text+0xce): undefined reference to uv_is_closing' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x143): undefined reference to uv_poll_init_socket' C:/Users/Sunway/ .conan/data/usockets/0.7.1//package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/ libuSockets.a( libuv.o):libuv.c:(.text+0x1ee): 未定义对uv_poll_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x2c9): undefined reference to uv_prepare_init' C:/Users/Sunway的引用/.conan/data/usockets/0.7.1/ //package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x2dc): undefined reference to uv_prepare_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x2e7): undefined reference to uv_unref' C:/Users/Sunway/.conan/data/usockets/0.7.1/ //package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x30a) : undefined reference to uv_check_init' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x315): undefined reference to uv_unref' C:/Users/Sunway/.conan/data/usockets/0.7.1 ///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x328 ) : undefined reference to uv_check_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x371): undefined reference to uv_loop_new' C:/Users/Sunway/.conan/data/usockets/0.7。 1 ///package / c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(. text+0x38f): undefined reference to uv_ref' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x39a): undefined reference to uv_prepare_stop' C:/Users/Sunway/.conan/data/usockets/0.7 .1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x3af) : undefined reference to uv_close' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x3ba): undefined reference to uv_ref' C:/Users/Sunway/.conan/data/usockets/0.7.1 ///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x3c5 ) : undefined reference to uv_check_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x3da): undefined reference to uv_close' C:/Users/Sunway/.conan/data/usockets/0.7。 1 ///package / c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(. text+0x40f): undefined reference to uv_run' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x41a): undefined reference to uv_loop_delete' C:/Users/Sunway/.conan/data/usockets/0.7 .1 ///package / c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(. text+0x44f): 未定义引用uv_run' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x4f3): undefined reference to uv_timer_init' C:/Users/Sunway/.conan/data/usockets/0.7.1/ / /package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x514): 未定义引用to uv_unref' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x550): undefined reference to uv_ref' C:/Users/Sunway/.conan/data/usockets/0.7.1/ / /package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x558): 未定义参考uv_timer_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x56b): undefined reference to uv_close' C:/Users/Sunway/.conan/data/usockets/0.7.1/ /package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x5d2 ): undefined reference to uv_timer_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x620): undefined reference to uv_ref' C:/Users/Sunway/.conan/data/usockets/0.7.1/ //package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x633): undefined reference to uv_close' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x669): undefined reference to uv_async_init' C:/Users/Sunway/.conan/data/usockets/0.7.1/ //package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x671) : undefined reference to uv_unref' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x15f): undefined reference to uv_poll_start' C:/Users/Sunway/.conan/data/usockets/0.7.1 ///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x1cf ) : undefined reference to uv_poll_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x20b): undefined reference to uv_close' C:/Users/Sunway/.conan/data/usockets/0.7。 1 ///package / c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(. text+0x5a7): 未定义引用uv_timer_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x686): undefined reference to uv_async_send' collect2.exe:错误:ld 返回 1 退出状态 ninja:构建停止:子命令失败。11:04:58: 进程"C:\Qt\Tools\CMake_64\bin\cmake.exe"退出,退出代码 1 . Error while building/deploying project rfid-cmd (kit: Desktop Qt 5.15.2 MinGW 32-bit ) 执行步骤“Build”时 11:04:58:经过时间:00:05。

0 投票
1 回答
236 浏览

c++ - 错误:没有用于调用 'uWS::TemplatedApp 的匹配函数::ws(常量字符 [3],)'

我正在使用 uwebsockets 来创建 ws 服务器。

主.cpp:

构建时的错误消息:

环境:

操作系统:Windows10 64bit

IDE:QtCreator

编译器:MinGW 8.1.0 32bit

c++标准:17

uwebsockets:19.2.0

0 投票
0 回答
355 浏览

c++ - uWebSockets 客户端

我主要使用 C++ 并希望为项目实现服务器-客户端通信。虽然不精通分布式计算,但我尝试了各种工具组合,例如 SocketIO 服务器(在 JS 中)+ C++ 客户端库或 IXWebSocket。我也不想在 Boost.Asio 中从头开始实现所有内容。

据我所知,uWebSockets是 C++ 性能最高且符合标准的解决方案。问题是只有一个服务器库可用。我了解“任何”兼容的 Web 套接字实现将能够与 uWebSockets 服务器一起使用,但是:

  • 有规范的方法吗?在这种情况下,人们将什么用作客户?我看到 repo 有大约 12k 颗星,所以这一定很简单。我再次想使用C++ 客户端,而不是 JS 中的浏览器实现。
  • 如果自定义解决方案是合适的,我应该怎么做?
0 投票
0 回答
30 浏览

c++ - 编译代码中的不同 qtcreator 行为

我正在尝试使用 Qtcreator 编译此代码:

并得到这个错误:

但是我在命令行中使用相同的编译器(arm-poky-linux-gnueabi-g++)成功编译了相同的代码。怎么了?无论如何,我将我的代码更改为此,它也在 Qtcreator 中编译得很好。

现在编译没有问题,但我不知道发生了什么。加上 Qtcreator 从我评论它们的行中获取错误(ping/pong)。

虽然有类似的代码(漏)。

为什么同一个编译器会显示这些不同的行为?请帮助我理解这一点。

PS:完整的类似代码在这里

0 投票
1 回答
177 浏览

c++ - uWebsocket 在 .message Behavior 上下文之外通过 WebSocket 发送消息

我必须以强制性打开,我在 C++ 方面很垃圾,刚从大学毕业。

我将 uWebsocket 设置为服务器,它目前只是将响应回显给客户端。

我正在尝试在单独的线程上设置一个队列,该线程有时可以响应客户端,而不是收到消息时。我在这里自杀是因为我在主线程的上下文之外找不到合适的函数类型。

我已经尝试使用Type_def功能,但它仍然表现不佳。

回来

PN3uWS9WebSocketILb0ELb1EZ11RelaySocketvE10SocketDataEE

我的第一篇文章,如果我没有发布所有适用的信息,那就太糟糕了。

编辑:

. 下面的代码对我有用。再次感谢。

0 投票
1 回答
62 浏览

c++ - 如何使用 uWS 访问 HTTP 请求的 IP 地址?

我正在使用uWebSockets做一个项目。我需要做的是从传入的 HTTP 请求中获取发件人 IP 地址。在文档中,我可以看到 IP 地址可以从WebSockets中取出。有人有想法将 uWS 转换为 WebSockets以获取数据,还是有其他方法可以获取数据?

库链接:https ://unetworking.github.io/uWebSockets.js/generated/interfaces/WebSocketBehavior.html

0 投票
1 回答
55 浏览

node.js - Websockets 严重的延迟/延迟

我们正在使用 websockets(特别是 Node.js 上的 uws.js)来运行多人测验。该服务器在 eu-west-2a 区域的 AWS t2.micro 上运行,但最近,我们看到一些玩家的延迟非常高 - 但只是间歇性的。

通过延迟,我实际测量的是从发送广播消息(使用 uws 内置的 pub-sub)到玩家设备告诉服务器他们已经安全接收到它所花费的时间。我们正在跟踪的消息告诉玩家的设备进入下一阶段的测验,因此它对应用程序的工作非常关键。大多数时候,对于英国的玩家来说,这个时间大约是 30 到 60 毫秒,但时不时地我们会看到长达 17 秒的延迟。

最近我们在世界的另一端有一个小组到我们的服务器做一个测验,虽然只有十来位玩家,所以服务器绝对没有超载,我们看到大约一半的小组断断续续地得到这些,非常高的延迟峰值,他们的设备需要 12、17、22 甚至 39(!!) 秒才能确认已收到消息。尽管这是一个慢节奏的测验,但这仍然是一个令人难以置信的延迟,并且会产生真正的不利影响。

我的问题是,我怎么知道是什么原因造成的,我该如何解决?我的猜测是这与 TCP 及其按顺序交付有关,再加上一些可能不可靠的互联网连接,因为昨天的一名玩家似乎在 39 秒内什么也没收到,然后连续三条消息都被备份了。对我来说,这表明丢包,但在尝试解决它时我什至不知道从哪里开始。我还没有弄清楚如何重现它(我在玩自己的时候从未见过它发生过),这让事情变得更加困难。

0 投票
0 回答
118 浏览

node.js - 在 uWebSockets 中,使用共享压缩器、专用压缩器或不压缩的优缺点是什么?

你好 Stackoverflow 的朋友们,

我正在将 uWebsockets.js 库用于实时应用程序。该库是原始 Websockets 库的基于性能的替代品,在内存压缩方面为用户提供了一些选项。

在他们的文档中,他们指定了设置共享压缩器、专用压缩器(各种大小高达 256kb)和不压缩的选项。这是他们到文档的链接之一:https ://unetworking.github.io/uWebSockets.js/generated/index.html#SHARED_COMPRESSOR

有人可以解释一下开发人员何时更喜欢使用共享压缩器吗?此外,如果有人想要专用压缩机,如何计算速度/CPU 之间的正确平衡?如果我们在具有 4-6 GB RAM 的 2 CPU 系统上运行,如果我们想以 10 FPS 流式传输 255 字节数据包,那么理想的情况是什么?

如果有人选择了 3kb 的专用压缩器(例如),但数据负载超过了 3kb 缓冲区,会发生什么情况?从技术角度来看,收到数据后会发生什么?

当然,没有压缩仅仅意味着库不做任何事情来提供缓冲区。但是什么时候有人想选择这个而不是其他两个呢?

请解释这些选项的优点和权衡,最好是一个可能适用于每个选项的用例示例。提前致谢!