我们有一个使用 websocket 进行连接的手机游戏。服务器是使用uWebSockets.js库的 Node.js 应用程序,客户端是使用Websocket-Sharp库的 Unity 应用程序。他们俩一起打得很好,我们没有遇到任何问题。
最近我们想启用websocket 压缩。两个库都表示它们支持按消息压缩扩展,但似乎有一些与它们不兼容的东西。因为当我们配置为使用压缩时,websocket 连接会在握手时立即关闭。
我们还使用ws库测试了客户端,并提供了具有相同结果的压缩示例。我们尝试修改 ws 压缩选项,发现当我们评论 serverMaxWindowBits 选项(默认为协商值)时,可以建立连接并且发送和接收消息没有问题。我们还询问了如何控制 uWebsockets 中的 serverMaxWindowBits。
我们尝试的最后一件事是连接一个最小的 uWS 服务器和 websocket-sharp 客户端。这是服务器的代码:
const uWS = require('uWebSockets.js');
const port = 5001;
const app = uWS.App({
}).ws('/*', {
/* Options */
compression: 1, // Setting shared compression method
maxPayloadLength: 4 * 1024,
idleTimeout: 1000,
/* Handlers */
open: (ws, req) => {
console.log('A WebSocket connected via URL: ' + req.getUrl() + …Run Code Online (Sandbox Code Playgroud) unity-game-engine websocket node.js websocket-sharp uwebsockets
我主要使用 C++,想要为项目实现服务器-客户端通信。虽然不太精通分布式计算,但我尝试过各种工具组合,例如 SocketIO 服务器(JS 中)+ C++ 客户端库或 IXWebSocket。我也不想在 Boost.Asio 中从头开始实现所有内容。
据我所知,uWebSockets是 C++ 中性能最高且符合标准的解决方案。问题是只有一个服务器库可用。我知道“任何”兼容的 Web 套接字实现都能够与 uWebSockets 服务器一起使用,但是:
我正在使用 laravel soketi 包。我不想使用 laravel-echo 进行客户端连接。所以,我正在用 firecamp 进行测试。但无法连接。
Soketi 已启动并运行
Server is up and running!
The Websockets server is available at 127.0.0.1:6001
The HTTP API server is available at http://127.0.0.1:6001
The /usage endpoint is available on port 9601.
Run Code Online (Sandbox Code Playgroud)
在 firecamp 中连接时我使用 url asws://localhost:6001/
但无法连接。

那么,如何连接呢?
由于本指南,我试图在 MacOs Xcode 中链接 uWebSocket https://medium.com/@tabvn/c-how-to-linking-uwebsocket-in-macos-xcode-9-ef3ffea880e4但是,当我尝试安装时uWebSocket,我收到错误 EpollEvent.h not found!有人能帮我解决这个问题吗?
我是 C++ 新手,我错过了很多关于它的知识。大多数情况下,我都是通过尝试和错误来完成工作的。但现在我坚持使用uWebSockets为 websocket 服务器设置一个测试项目。不幸的是,没有可用的安装文档,并且它不能作为 C 库提供。
我克隆了 repo 递归(因为有子模块uSockets)并执行了make和make install。到目前为止一切顺利,没有错误。
我尝试在 eclipse 中创建一个新的托管 C++ 项目,并添加一个main.cpp包含该文件src/内容的文件
我将“包含路径”设置为/usr/local/include /root/uWebSockets/uSockets/src和/usr/local/include/uWebSockets
我还将编译器方言设置为版本 c++17 (因为这是 uWebSockets 所必需的)
现在我在构建过程中遇到了很多错误,但我不知道如何解决它们:
13:58:48 **** Incremental Build of configuration Debug for project websocket-test ****
make all
Building file: ../src/main.cpp
Invoking: GCC C++ Compiler
g++ -std=c++17 -I/usr/local/include -I/root/uWebSockets/uSockets/src -I/usr/local/include/uWebSockets -O0 -g3 -Wall -Wconversion -c -fmessage-length=0 -pthread -MMD -MP -MF"src/main.d" -MT"src/main.o" -o "src/main.o" "../src/main.cpp"
Finished …Run Code Online (Sandbox Code Playgroud) 我想在我自己的使用 CMake 的项目中使用uWebSockets 。
对我来说有两个问题:
如果我能让它与 CMake 一起工作,即使没有反映项目的所有可能性,我也会很高兴,例如构建示例或链接可选依赖项,如uSockets的 boost asio (其依赖项之一)。
是否可以通过 CMake 的 FetchContent 获取库?请注意,uWebSockets 将其依赖项 uSocket 设置为 git 子模块。
与其在 CMake 中重写整个 Makefile,而只是从 CMake 中调用 make,这是否有意义?
关于柯南:它抛出一个错误,我也不确定如何修复(在 Linux 上找不到 MSBuild python 包?):
ERROR: Package 'usockets/0.8.5' not resolved: usockets/0.8.5: Cannot load recipe.
Error loading conanfile at '/home/<USER>/.conan2/p/usock995f8272b80d4/e/conanfile.py': Unable to load conanfile in /home/<USER>/.conan2/p/usock995f8272b80d4/e/conanfile.py
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed …Run Code Online (Sandbox Code Playgroud)