uWebSockets项目地址:https://github.com/uNetworking/uWebSockets
uSockets项目地址:https://github.com/uNetworking/uSockets
uWebSockets的使用(二):uWebSockets的编译和使用_wangdamingll的博客-CSDN博客
之前工作中有用到过websocket,所以最近研究了一下相关的开源项目,据说uWebSockets这个库很棒,就想研究一下。不看不知道,一看吓一跳啊,网上相关的资料少的可怜,我想我可能要悲剧了。
话不多说,据官网uWebSockets介绍,uWebSockets的使用要依靠uSockets,这是一个网络事件库,所以首先就需要研究一下uSockets。使用uSockets有2种方式,一种是直接使用uSockets源码,一种是将uSockets编译成动态/静态库使用。
这里用vs2017在win10下举例。首先从uSockets项目网址将项目下载下来,项目中src文件下是源码。我在这里新建一个common文件夹,将src文件改名为uSockets并放到common文件夹下。另外uSockets在win上是用libuv构建的,所以在common下也加了libuv相关的头文件和其静态库。如果不清楚libuv的编译,请参考我的另外一篇博客C网络库使用(一):libuv的安装、多线程tcp客户端、多线程tcp服务器的使用_wangdamingll的博客-CSDN博客
新建一个项目,可用使用uSockets/examples/echo_server.c,我这里改成了echo_server.cpp,以下是项目属性设置
1)VC++ 目录->包含目录, 将libuv的头文件和uSockets包含进来
2)VC++ 目录->库目录, 将libuv的静态库路径包含进来
3)C/C++ ->常规->SDL 检查,选择否,去掉指针未初始化的错误
4)C/C++ ->预处理器,添加LIBUS_NO_SSL,去除ssl功能,是项目需求而定
5)C/C++ ->预编译头,选择不使用预编译头
6)链接器 ->输入->附加依赖项,添加 libuv.lib Iphlpapi.lib psapi.lib userenv.lib
6)链接器 ->输入->忽略特定默认库,添加 LIBCMTD
分别右击头文件和源文件->添加现有项,将common库下uSockets下的所有文件添加进工程中
将从uSockets项目网址将项目下载下来,你会发现其实是已经使用vs构建的动态库工程,但是如果用vs打开生成的话,会提示windows SDK有问题,右击解决方案->重定解决方案->选定windows SDK的话,再次生成,会报打不开 一系列 .h的错误,应该是windows SDK的问题了,所以我这里包含src下的源码,自己新建vs 静态库工程构建uSockets静态库
新建一个静态库工程,common文件组成和步骤二相同。
1)VC++ 目录->包含目录, 将libuv的头文件和uSockets包含进来
2)VC++ 目录->库目录, 将libuv的静态库路径包含进来
3)C/C++ ->常规->SDL 检查,选择否,去掉指针未初始化的错误
4)C/C++ ->预处理器,添加LIBUS_NO_SSL,去除ssl功能,是项目需求而定
5)C/C++ ->预编译头,选择不使用预编译头
分别右击头文件和源文件->添加现有项,将common库下uSockets下的所有文件添加进工程中
点击生成解决方案,就会生成.lib静态库了,将uSockets的internal文件夹和libusockets.h提取出来作为uSockets静态库的头文件即可