特么的特么的特么的!!!!整个网络中愣是没有找到完整的websocket client例子!!!!
libwebsocket首先编译出来,妈蛋例子复杂到都是什么鬼?
websocketpp官网的windows编译、使用readme在哪里?????在哪里???
下载boost:https://jaist.dl.sourceforge.net/project/boost/boost-binaries/ (1.69.0)
下载openssl:https://slproweb.com/products/Win32OpenSSL.html (1.1.1a)
下载websocketpp:https://github.com/zaphoyd/websocketpp (master)
请分别下载好32和64位的,并安装。
安装完boost以及openssl后vs2015新建win32工程。
项目配置,添加Include Directories如下(路径随编译位数自行修改):
项目配置,添加Library Directories如下(路径随编译位数自行修改):
以上二项摘自 https://blog.csdn.net/huanggang982/article/details/53418503 感谢!亦可常规添加至C/C++>>General>>Additional 和 Linker>>General
添加ssl 静态库,(用以支持wss)
至此环境配置完成,找到websocketpp\examples\print_client_tls.cpp,将内容靠柏至vs 工程中,编译。
报错 "strcasecmp undefined"
增加宏:#define strcasecmp stricmp
编译通过!
运行与公司web连接,报错:
Get Connection Error: endpoint not secure
什么鬼?什么鬼?什么鬼?
联想到之前用libwebsocket时需要跳过ssl验证之类,定位到demo中的 on_tls_init 函数,
context_ptr on_tls_init(const char * hostname, websocketpp::connection_hdl) {
context_ptr ctx = websocketpp::lib::make_shared<boost::asio::ssl::context>(boost::asio::ssl::context::sslv23);
try {
ctx->set_options(boost::asio::ssl::context::default_workarounds |
boost::asio::ssl::context::no_sslv2 |
boost::asio::ssl::context::no_sslv3 |
boost::asio::ssl::context::single_dh_use);
ctx->set_verify_mode(boost::asio::ssl::verify_peer);
ctx->set_verify_callback(bind(&verify_certificate, hostname, ::_1, ::_2));
// Here we load the CA certificates of all CA's that this client trusts.
ctx->load_verify_file("ca-chain.cert.pem");
} catch (std::exception& e) {
std::cout << e.what() << std::endl;
}
return ctx;
}
可是,这里面又是什么鬼,真的没和web打过多少交道,问度娘,0相关,google,只找到了一个老外碰到了相同的问题!
https://stackoverflow.com/questions/23924408/zaphoyd-websocketpp-and-wss-tls-client-example
老外都崩溃了要换python,有图有真相!
不过,万幸有人做了回答:
于是直接验证函数中直接返回这老外的回答,连接成功!收到了WEB发来的消息!!真是TMD!!
那么多人推荐的libwebsocket&websocketpp,愣是没有一个完整的使用手册?