c++集成socket.io-client-cpp

好久没有更新博文了,最近项目需要用到socket.io来实现通信,所以使用socket.io-client-cpp组件来实现,不过这个组件好久好久没有更新了,先集成用起来再说。

依赖文件

  • boost(v 1.66.0)
  • rapidjson (v 1.1.0)
  • websocketpp (v0.8.1)
  • socket.io-client-cpp (v1.6.1)
  • openssl (v1.0.2t)

1. 编译boost

从官网下载源码包( https://www.boost.org )

编译流程:

.\bootstrap.bat 
 
bjam install --prefix="" --with-system --with-date_time --with-random link=static runtime-link=shared threading=multi 

编译之后的库文件以及头文件

2. 编译openssl

下载以及安装 ActivePerl( http://www.activestate.com/activeperl/downloads

下载openssl v1.0.2t 源码包

编译流程:(以vs2017为例)

命令行说明:  
x86 ->  VS 2017的开发人员命令提示符; x64 ->  适用于 VS 2017 的 x64 本机工具命令提示

参数说明:
 debug-VC-WIN32  编译32位debug版本 
 VC-WIN32        编译32位release版本 
 debug-VC-WIN64A 编译64位debug版本 
 VC-WIN64A        编译64位release版本 
X86:
 
perl Configure VC-WIN32 no-asm --prefix=./build

ms\do_ms

#静态库

nmake -f ms\nt.mak  

nmake -f ms\nt.mak install 

#动态库

nmake -f ms\ntdll.mak  

nmake -f ms\ntdll.mak install 
x64:

perl Configure VC-WIN64A no-asm --prefix=./build

ms\do_win64a.bat 

#静态库

nmake -f ms\nt.mak  

nmake -f ms\nt.mak install 

#动态库

nmake -f ms\ntdll.mak  

nmake -f ms\ntdll.mak install  

编译之后的库文件以及头文件

3. 集成socket.io

添加socket.io源文件

引入头文件

vs2017 -> 项目属性 -> c/c++->常规->附加包含目录

引入依赖库

vs2017 -> 项目属性 -> 链接器 -> 常规 -> 附加库目录

vs2017 -> 项目属性 -> 链接器 -> 输入-> 附加依赖项

4. 实现代码

std::unique_ptr _io = new sio::client();
_io->set_reconnect_delay(200);
_io->set_socket_open_listener([&](std::string const& nsp) {

});
_io->set_socket_close_listener([&](std::string const& nsp) {

 });
_io->set_reconnect_listener([&](unsigned m_reconn_made, unsigned delay) {

});
_io->socket("")->on("", sio::socket::event_listener_aux([&](std::string const& name, sio::message::ptr const& data, bool isAck, sio::message::list &ack_resp)
{

 }));

_io->connect("http://127.0.0.1:3000/");

_io->socket("")->off_all();
_io->socket("")->off_error();
_io->close();

Author: jhonse

Jhonse技术博客: http://blog.jhonse.com

Leave a Reply

Your email address will not be published. Required fields are marked *