5

我需要快速、安全和便携的 websockts,所以我一直在互联网上进行挖掘,我遇到了Zaphoyd Studios的 WebSocket++ 。

我的 c++ 经验为零(尽管我是一名熟练的程序员),但它似乎勾选了我需要的每一个框,我很快在github上调整了 echo_server 和 telemetry_client 示例,并整理了一个概念证明。

将手放在 wss 服务器示例 (echo_server_tls) 上,我快速编译并使用了一个简单的测试客户端来验证它是否正常工作。

不幸的是,我的经验不足让我失望,我天真地希望将 url 更改为 wss 并包括启用 tls 的客户端标头(asio_client.hpp 不是 asio_no_tls_client.hpp)会让我朝着正确的方向前进!

它没有,而是给出了错误;-

[2014-05-29 01:17:58] [application] Get Connection Error: endpoint not secure

所以......我的问题; -

有没有人有一个“echo_client_tls”示例让我朝着正确的方向前进,我非常怀疑我是第一个这样做的人(尽管可能只是最缺乏 C++ 经验的人)。

我确信我可以从那里拿走它(我什至会将它提交回 git,因为它可能对我自己等其他菜鸟有用)。

PS 感谢作者,如果他们读过这篇文章,这似乎是一个非常完整的实现!

4

1 回答 1

5

除了包含启用 tls 的客户端标头之外,客户端还需要为tls_init. 您可以通过添加以下处理程序来修改现有客户端示例之一以支持 tls。

_client.set_tls_init_handler([this](websocketpp::connection_hdl){
    return websocketpp::lib::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::tlsv1);
});
于 2015-06-09T17:58:08.447 回答