我有一个带有我创建的 Petalinux 构建的Xilinx ZCU106,其中包括一个使用SignalR-Client-Cpp的应用程序。尽管尝试了很多事情,但在调用start()
我的signalr::hub_connection
.
此应用程序在其他 Linux 系统(如 Ubuntu)上运行良好。我认为问题在于很难找到ca-certificates.crt
通常位于/usr/local/ssl
更普通的 Linux 发行版(如 Ubuntu)上的文件。在 Petalinux 构建中,它位于此处:/etc/ssl/certs/ca-certificates.crt
.
我能说的最好的,我需要做这样的事情来配置signalr::hub_connection
使用证书文件:
web::http::client::http_client_config httpConfig;
httpConfig.set_ssl_context_callback([](boost::asio::ssl::context& ctx) {
ctx.load_verify_file("/etc/ssl/certs/ca-certificates.crt"); });
web::websockets::client::websocket_client_config wsConfig;
wsConfig.set_ssl_context_callback([](boost::asio::ssl::context& ctx) {
ctx.load_verify_file("/etc/ssl/certs/ca-certificates.crt"); });
signalr::signalr_client_config signalrConfig;
signalrConfig.set_http_client_config(httpConfig);
signalrConfig.set_websocket_client_config(wsConfig);
auto hubConn = signalr::hub_connection_builder::create(signalrURI).build();
hubConn.set_client_config(signalrConfig);
std::promise<void> task;
hubConn.start([&task](std::exception_ptr exception) {
// Code that checks the exception, etc
然而,即使这样做,传入的异常也会start()
被填充,说明“SSL 握手错误”。
我已经尝试过一些其他的事情,比如在给它之前使用web::credentials
和设置它们,但我得到了相同的结果。signalr_client_config
hub_connection
我不知道如何让它发挥作用,我希望其他人可能有一些想法?