★,°:.☆( ̄▽ ̄)/$:.°★
这篇文章主要介绍websocketpp的安装与使用。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它使得客户端和服务器之间的数据交流变得更加实时、高效。相比传统的 HTTP 请求-响应机制,WebSocket 直接建立连接,并通过数据帧(Data Frame)来交换消息,从而避免了每次通信都要建立、断开连接的开销。
WebSocket 协议最早由 HTML5 规范提出,它可以用于 Web 应用程序、移动应用程序等不同类型的应用场景中。WebSocket 除了支持文本格式的消息外,还可以使用二进制数据格式发送数据,这使得 WebSocket 可以处理包括音频、视频等复杂类型的数据。
WebSocket 的优点包括:
实时性:WebSocket 支持实时通信,使得客户端与服务器可以快速响应对方的请求。 高效性:相比 HTTP 协议,WebSocket
不需要反复连接、断开连接,因此减少了网络通信的延迟时间和资源消耗。 跨平台:WebSocket
协议可以跨越多种浏览器和操作系统,从而为开发者和用户提供了更广泛的选择。
总的来说,WebSocket 提供了一种快速、实时、高效的通信方式,使得 Web 应用程序和移动应用程序等可以更加灵活地处理复杂的数据交互需求。
以ubuntu18.04为例:
websocketpp库依赖boost_system,因此首先安装boost库:
# apt安装
sudo apt-get install libboost-dev
安装websocketpp库(这里用0.8.2版本):
github地址:https://github.com/zaphoyd/websocketpp
# 编译安装
cd websocketcpp
mkdir build && cd build
cmake ..
make
sudo make install
安装完成:
通信例程测试:
# 服务端
cd websocketpp/examples/echo_server
g++ echo_server.cpp -o echo_server -lboost_system -lpthread
./echo_server
# 客户端
cd websocketpp/examples/echo_client
g++ echo_client.cpp -o echo_client -lboost_system -lpthread
./echo_client
# 默认通信在本地的9002端口
在线websocket收发测试:
地址:http://www.websocket-test.com/
测试如下:
端口重用问题可以看:http://t.csdn.cn/Z7AyU
(一般关掉服务后直接重启会报错,等一会就可以)
根本解决就是在listen函数前加入这条,这样在Linux端重启程序后就不会报错了:
server.set_reuse_addr(true); // 加入端口复用
server.listen(websocketpp::lib::asio::ip::tcp::v4(), uPort);
参考:
https://zhuanlan.zhihu.com/p/59925926
http://t.csdn.cn/CGAFL
以上。