当前位置: 首页 > news >正文

Linux下编译WebSocket++

一、WebSocket++简介

WebSocket++是一个仅包含头文件的C++库,实现了RFC6455 WebSocket 协议。它允许将 WebSocket客户端和服务器功能集成到C++程序中。该库采用可互换的网络传输模块,包括基于原始字符缓冲区、基于C++ iostreams以及基于Asio(通过Boost或独立实现)的模块。终端用户可根据需要编写额外的传输策略,以支持其他网络或事件库。

其github地址为:https://github.com/zaphoyd/websocketpp

官网地址为:https://www.zaphoyd.com/projects/websocketpp/

文档地址为:https://docs.websocketpp.org/md_tutorials_utility_client_utility_client.html

二、下载编译WebSocket++

首先从github下载WebSocket++源码,拷贝到Linux系统中,解压缩,进入源码目录:

执行cmake,编译,安装:

cmake . -DCMAKE_INSTALL_PREFIX=$(pwd)/install
make
make install

如果没有报错,可以发现WebSocket++源码目录的install目录下会生成WebSocket++的头文件和库文件。examples目录下生成使用示例:

三、WebSocket++例程的单独编译

以单独编译例程中的echo_client为例。WebSocket++依赖boost库,所以单独编译例程时需要指定boost库的头文件和库文件:

g++ echo_client.cpp -o echo_client -g -I/home/ev/source/boost-1.81.0/install/include -I/home/ev/source/websocketpp-0.8.2/install/include -L/home/ev/source/boost-1.81.0/install/lib -lboost_system -lcrypto -lssl

然后编译时需要指定链接库文件:-lcrypto -lssl,否则会报错:

四、WebSocket++例程的使用

微软商店(Microsoft Store)下载WebSocket Debug Tools:

启动WebSocket Debug Tools终端的WebSocket Server:

这里演示echo_client的使用。修改WebSocket++的echo_client例程中的echo_client.cpp,修改要连接的WebSocket Server的地址,即修改变量uri的值:

......int main(int argc, char* argv[]) {// Create a client endpointclient c;//std::string uri = "ws://localhost:9002";std::string uri = "ws://192.168.31.108:8050/ws";if (argc == 2) {uri = argv[1];}try {// Set logging to be pretty verbose (everything except message payloads)c.set_access_channels(websocketpp::log::alevel::all);c.clear_access_channels(websocketpp::log::alevel::frame_payload);// Initialize ASIOc.init_asio();// Register our message handlerc.set_message_handler(bind(&on_message,&c,::_1,::_2));websocketpp::lib::error_code ec;client::connection_ptr con = c.get_connection(uri, ec);if (ec) {std::cout << "could not create connection because: " << ec.message() << std::endl;return 0;}// Note that connect here only requests a connection. No network messages are// exchanged until the event loop starts running in the next line.c.connect(con);// Start the ASIO io_service run loop// this will cause a single connection to be made to the server. c.run()// will exit when this connection is closed.c.run();} catch (websocketpp::exception const & e) {std::cout << e.what() << std::endl;}
}

重新编译echo_client.cpp,运行,可以看到echo_client和WebSocket Server连接并通讯上了:

http://www.dtcms.com/a/557357.html

相关文章:

  • 淄博哪家公司做网站最好莱钢吧贴吧
  • 调试的艺术:从崩溃到洞察的全面指南
  • 深入洞察:大模型服务之MaaS平台
  • 1024.5不是数位和--------题解
  • 加强门户网站建设的通知博客和网站的区别
  • 阿里云网站建站网站建设的公司这个
  • 基于AWS多区域部署的高可用性与灾难恢复架构设计
  • 海外注册域名的网站好石家庄专业网站营销
  • HTML CSS八股
  • 免费网页源代码网站个人微信营销
  • 【项目实战1 -瑞吉外卖|day23 】
  • QuickLook:文件预览
  • 使用QKeyEvent keyPress(QEvent::KeyPress, key模拟键盘发送事件,会导致主程序卡死
  • 512-Spring AI Alibaba 字段分类分级 Graph 示例
  • 网站开发培训中心wordpress怎么建页面
  • 朝阳做网站哪家公司好推广广告投放
  • 我是程序员吗?
  • 在线excel数据导入导出框架
  • 手撕vector:从零实现一个C++动态数组
  • 2025年--Lc228-523. 连续的子数组和(带测试用例)-Java版
  • 统计学---2.描述性统计-参数估计
  • 辽宁城乡和住房建设部网站怎么做个网站
  • 太平洋建设集团网站网站登录失败怎么回事
  • 住宅小区物业管理系统网站建设开票 网站建设
  • 模块互相依赖问题解决的一个记录
  • 使用mujoco加载模型和控制、以及训练(一)
  • (125页PPT)麦肯锡业务流程规划方法论及流程规划案例(附下载方式)
  • AI学习研究——KIMI对佛教四圣谛深度研究
  • CSS padding(填充)
  • 通信原理(008)——模拟通信和数字通信