问题标签 [websocket++]

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

c++ - 我必须构建我的项目 2 次,第一次失败,因为它无法打开库

我的问题恰好是,每次我用 CMake 重新生成我的项目并尝试使用 VisualStudio 构建它时,它需要 2 次尝试,第一次总是失败,因为无法打开一个库,但这是已经在那了。我第二次构建它时,它完美无缺。

我想这是因为我让 VisualStudio 自动提取并包含该库,而我的 CMake 文件中的某些内容的顺序错误,但我真的不知道。

这是在项目中包含 Asio 和 Websocket++ 的 CMake 代码,VS 无法打开的文件是最后一行的 Asio.lib 文件。Websocket++ 需要 Asio 才能运行。

提前谢谢你的帮助

0 投票
0 回答
151 浏览

c++ - 关于 websocketpp 销毁的堆栈跟踪的困惑

我正在使用 Instrument(XCode 工具) 来获取我的程序的堆栈跟踪,我得到了以下结果:

在此处输入图像描述

在这张照片中,它显示了破坏

std::__1::vector<websocketpp::transport::buffer, std::__1::allocator<websocketpp::transport::buffer> >::~vector()

叫做

std::__1::vector<boost::asio::detail::timer_queue<boost::asio::detail::chrono_time_traits<std::__1::chrono::steady_clock, boost::asio::wait_traits<std::__1::chrono::steady_clock> > >::heap_entry, std::__1::allocator<boost::asio::detail::timer_queue<boost::asio::detail::chrono_time_traits<std::__1::chrono::steady_clock, boost::asio::wait_traits<std::__1::chrono::steady_clock> > >::heap_entry> >::~vector()

但是,当我深入研究 的源代码时websocketpp::transport::buffer,它的唯一成员是char const *bufsize_t len显示如下:

那么,为什么破坏websocketpp::transport::buffer会导致破坏vector<boost::asio::detail::timer_queue.... ::heap_entry> >呢?

更新:2018-10-18

今天我lldb调试我的程序,发现销毁的vector<boost::asio::detail::timer_queue.... ::heap_entry> >从来没有被执行过。

我现在感觉更迷茫了……

0 投票
1 回答
596 浏览

cors - Websockets++ CORS 设置

我正在尝试在使用带有独立 asio 的 websocket++ 的 C++ 项目与当前在浏览器中运行的 Angular 创建的客户端之间运行一些 websocket 通信。

看来我的握手有问题,即一些 CORS 设置。

在客户端我得到这个: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:3001/socket.io/?EIO=3&transport=polling&t=MV3LZsv. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

同时我在 cpp 侧控制台中得到了这个: [2018-12-18 15:09:39] [error] Handshake ended with HTTP error: 426 [2018-12-18 15:09:39] [fail] WebSocket Connection [::ffff:127.0.0.1]:57762 v0 "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0" /socket.io/?EIO=3&transport=polling&t=MV1ffJg 426 websocketpp:28 Upgrade required

好吧,我在 GitHub 存储库上发现了这个问题: https ://github.com/zaphoyd/websocketpp/issues/679

所以我尝试添加验证处理程序,但它不起作用,它甚至没有被调用,所以Access-Control-Allow-Origin甚至没有添加到请求中。

有任何想法吗?

//编辑:更新客户端错误信息

0 投票
1 回答
1779 浏览

c++ - 在 VS2017 中为 cmake 导入 websocketpp

我正在尝试将 websocket++ 导入到我在 Visual Studio 2017 中的项目中,但使用它时遇到了很多错误。

项目结构:

我的 CMakeLists.txt 看起来像:

echo_server.cpp 看起来像:

错误:

严重性代码描述项目文件行抑制状态错误(活动)E1696 无法打开源文件“websocketpp/config/core.hpp”MyProject - x64-Debug(默认)G:_Development\Projects\MyProject\src\websocketpp\config\asio_no_tls。 hpp 31
错误(活动) E1696 无法打开源文件“websocketpp/transport/asio/endpoint.hpp” MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\websocketpp\config\asio_no_tls.hpp 32
错误(活动)E1696 无法打开源文件“websocketpp/roles/server_endpoint.hpp” MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\websocketpp\server.hpp 31
错误(活动)E0283 限定名称不允许 MyProject - x64-Debug(默认)G:_Development\Projects\MyProject\src\echo_server.cpp 7
错误(活动)E0065 需要一个“;” MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 7
错误(活动) E0276 名称后跟 '::' 必须是类或命名空间名称 MyProject - x64-Debug(默认) G :_Development\Projects\MyProject\src\echo_server.cpp 9
错误(活动)E0276 名称后跟 '::' 必须是类或命名空间名称 MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\回声服务器.cpp 10
错误(活动)E0276 名称后跟“::”必须是类或命名空间名称 MyProject - x64-Debug(默认)G:_Development\Projects\MyProject\src\echo_server.cpp 11
错误(活动)E0276 名称后跟“ ::' 必须是类或命名空间名称 MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 14
错误(活动) E0070 不允许类型不完整 MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 17
错误(活动) E0020 标识符“服务器”未定义 MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 17
错误(活动)E0020 标识符“s”未定义 MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 17
错误(活动)E0018 预期为 ')' MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 17
错误(活动)E0065 预期为 ';' MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 17
错误(活动) E0077 此声明没有存储类或类型说明符 MyProject - x64-Debug(默认) G:_Development\Projects\ MyProject\src\echo_server.cpp 43
错误(活动)E0065 预期为 ';' MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 43
错误(活动)E0077 此声明没有存储类或类型说明符 MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 44
错误(活动)E0065 预期为“;” MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 44
错误(活动) E0077 此声明没有存储类或类型说明符 MyProject - x64-Debug(默认) G:_Development\Projects\ MyProject\src\echo_server.cpp 47
错误(活动)E0065 预期为 ';' MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 47
错误(活动)E0077 此声明没有存储类或类型说明符 MyProject - x64-Debug(默认)G:_Development\Projects\MyProject\src\echo_server.cpp 50
错误(活动)E0065 预期为“;” MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 50
错误(活动) E0077 此声明没有存储类或类型说明符 MyProject - x64-Debug(默认) G:_Development\Projects\ MyProject\src\echo_server.cpp 53
错误(活动)E0065 预期为 ';' MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 53
错误(活动)E0077 此声明没有存储类或类型说明符 MyProject - x64-Debug(默认)G:_Development\Projects\MyProject\src\echo_server.cpp 56
错误(活动)E0065 预期为“;” MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 56
错误(活动) E0077 此声明没有存储类或类型说明符 MyProject - x64-Debug(默认) G:_Development\Projects\ MyProject\src\echo_server.cpp 59
错误(活动)E0065 预期为 ';' MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server.cpp 59
错误(活动) E0169 需要声明 MyProject - x64-Debug(默认) G:_Development\Projects\MyProject\src\echo_server。 cpp 60
错误 C1083 无法打开包含文件:'websocketpp/config/core.hpp':没有这样的文件或目录 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\src\CMakeLists.txt g: _development\projects\myproject\src\websocketpp\config\asio_no_tls.hpp 31

怎么了?请帮忙。

0 投票
1 回答
111 浏览

websocket++ - 在 run() 但在处理程序之外会发生什么?/ send() 应该放在哪里?

我想随时send发消息。但是,我不知道该放在哪里send()。我实际上不知道run()调用之后会发生什么,但不知道在处理程序内部会发生什么。

我目前的设置只是为了send我的信息,on_open因为这是我可以send让它工作的唯一地方。但是,以这种方式发送多条消息被证明是一个问题。我可以从 关闭连接on_message,但我无法send通过该客户端再次关闭,无论我是否再次connect关闭run()

理想的解决方案是不必close重新打开连接或端点。再一次,我想知道我应该放在哪里,send如果不在on_openon_message

使用 C++11 和 VS2015。另外我无法复制/粘贴代码,所以我可能错过了一些愚蠢的错别字。不知道还能说什么。我不知道我可以把它放在哪里send ,以便我可以在按下按钮时发送它,例如

0 投票
1 回答
178 浏览

c++ - websocketpp 和 boost.asio 有什么区别?

最近我正在用 C++ 中的 websocketpp 打包 Deribit API。但是当我阅读Websocketpp的源代码时,我发现它与boost.asio密切相关。我以前听过 boost.asio,但我不知道我是否需要掌握 boost.asio 的命令才能更好地学习 websocketpp。换句话说,它们之间有什么区别?

0 投票
0 回答
811 浏览

c++ - websocketpp 连接失败,asio.system 错误代码 10057

我使用 Websocket++ 连接到使用 websocket 的 deribit 和 bitmex 交换。我写了一个 wssclient 类,我认为我的代码中没有错误,因为我成功连接到带有 address 的 deribit wss://www.deribit.com/ws/api/v2

但不知何故,我无法使用地址连接到 bitmex wss://testnet.bitmex.com/realtime。我从他们的官方文档中找到了这些地址,调试消息如下:

[2020-02-17 00:50:35] [info] 获取远程端点时出错:asio.system:10057
[2020-02-17 00:50:35] [fail] WebSocket Connection Unknown - /realtime 0 websocketpp.transport :9 定时器已过期
[2020-02-17 00:50:35] [错误] handle_connect 错误:定时器已过期

如果需要更多信息,请直接说出来。
提前致谢。

0 投票
1 回答
190 浏览

websocket - 未设置 set_tls_init_handler 时 websocketpp 如何处理连接?

我看到我必须定义一个on_tls_init并且必须set_tls_init_handler指向它以on_tls_init实现安全连接。set_tls_init_handler未设置时会发生什么?webscoketpp 是连接结束ws://而不是连接wss://还是断开连接?

0 投票
2 回答
626 浏览

c++ - 如何在 websocketpp 中使用自定义记录器?

我正在使用 websocketpp 创建遥测服务器,并遵循此处的示例。我的应用程序将作为启动时启动的 linux 守护程序运行,因此我将无法将日志写入标准输出。因此,我想使用spdlog添加一个客户记录器,并了解它可以根据页面上的内容来完成。看起来我需要使用该websocketpp::log::stub界面来创建自己的客户记录器。问题是,关于日志记录的文档非常有限,我不确定从哪里开始以及如何将其合并到上面链接的遥测服务器示例的上下文中。当我定义我的服务器时,我不确定如何指定记录器:typedef websocketpp::server<websocketpp::config::asio> server;

如何扩展stub课程,以及如何使用此客户记录器初始化我的服务器?

我能找到的唯一示例代码在此线程中但根据链接的注释,此代码之后不再相关V 0.3.x+

0 投票
1 回答
1137 浏览

c++ - Websocket++ 错误:handle_transport_init 收到错误:TLS 握手失败

当我连接到本地主机时,它起作用了。但是当我尝试连接到 wss://echo.websocket.org 时,它会说:

[2020-07-03 00:24:19] [connect] 连接成功

[2020-07-03 00:24:20] [错误] handle_transport_init 收到错误:TLS 握手失败

[2020-07-03 00:24:20] [失败] WebSocket 连接 174.129.224.73:443 -“”/0 websocketpp.transport.asio.socket:8 TLS 握手失败

[2020-07-03 00:24:20] [info] asio async_shutdown 错误:asio.ssl:336462231(在初始化时关闭)

我需要做什么才能使其正常工作?

部分代码: