WebSocket使用(C++环境)(一) --- websocket++库的安装与使用

websocket官方网址:http://websocket.org/

websocket++官方网址:https://www.zaphoyd.com/websocketpp

websocket++使用手册:https://www.zaphoyd.com/websocketpp/manual/

今天接收到一个任务,说是使用websocket,这还不够,只能用C++语言,这就有点尴尬了。话不多说,走起

一、概述

在C++环境下使用websocket,比较常用的有2个库:websocket++ 和 libwebsockets。 前者是用C++写的,依赖C++11和boost, 后者是用C语言写的,依赖openssl,这里不做过多介绍。

参考网址:http://www.oschina.net/project/tag/321/websocket?lang=21&sort=view

二、websocket++安装

1、websocket++下载

     git网址:https://github.com/zaphoyd/websocketpp

2、安装boost

linux:

yum install boost

yum install boost-devel 

三、websocket++编译

1、比较简单的编译方式

cd websocketpp-master/examples/echo_server

g++ -o test echo_server.cpp -I./ -I/home/wdm/websocketpp-master -L/home/wdm/local/lib -lboost_system -lboost_chrono -lrt

没错就是这么简单,具体boost库路径具体对待

2、用 scons 命令编译

1)what is scons? 

scons是linux下的自动构建工具,类似cmake,这里不做过多介绍。

2)scons下载与安装

(1)你需要先安装python,这里就不做过多介绍了

(2)scons 下载

wget http://prdownloads.sourceforge.net/scons/scons-2.2.0.tar.gz .

tar zxvf scons-2.2.0.tar.gz

cd scons-2.2.0

python setup.py install

正常情况下,scons将安装到${PYTHON_INSTALL_DIR}/bin/下

3)编译websocket++库

有同学会问:为毛费那么大的事?不都是 configure make&makeinstall解决吗?

因为websocket++就是用scons编译的,理由很简单。

仔细观察会发现在文件夹中有 SConstruct,而这个文件恰恰是用python写的,下次遇到你就知道了。

cd websocketpp-master  //进入根文件夹

scons                             //编译

what? 是不是很慢?可以先把其他的程序注释掉,先只编译echo_server

scons -c   //清空 

scons      //再次编译

对!你没有看错!一大堆错误,很坑

解决办法:显然是缺少chrono库啊

打开根目录下的SC文件

vi SConstruct

改成这样,你没有看错

scons      //再次编译

你没有看错!还是有错误(其实现在echo_server和echo_client已经编译完了)

解决方法:

vi connection.cpp +430

scons      //再次编译

没错 还是有错误。。。屡败屡战!

解决方法:

vi test/utility/close.cpp +40

将所有的close作用域前面都加上websocketpp::

scons      //再次编译

泪流满面,终于编过去了!

4)查看编译后的可执行文件

tree websocketpp-master/build/release

OK,这仅仅是个开始,稍后再尝试编译其他的例子。

四、websocket++的echo_client和echo_server的使用

第三步已经把echo_client和echo_server编译出来了,让我们先执行一下2个程序

1、启动echo_server

你没有看错,竟然启动不起来!崩溃。。。

解决方法:

翻译一下错误信息:大意是地址家族协议不支持。定位代码出错部分:

// Listen on port 9002
echo_server.listen(9002);

OK,查看源代码:

vi  websocketpp/transport/asio/endpoint.hpp

你没有看错,用的竟然是IPV6!

找找看看有木有重载的listen()函数,不错找到了!

修改为:echo_server.listen(websocketpp::lib::asio::ip::tcp::v4(),9002);

OK,编译,再启动试试,哦也,成功启动

2、启动echo_client

谢天谢地,木有问题

3、成功连接界面

4、用网页测试工具测试

网页测试工具网址:http://www.blue-zero.com/WebSocket/

告一段落!

  • 12
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
要在Vue中使用WebSocketC++通信,您需要编写WebSocket客户端代码并将其与C++服务器端代码配对。 以下是一些步骤,您可以遵循这些步骤来在Vue中使用WebSocketC++进行通信: 1. 在Vue项目中安装WebSocket。您可以使用Vue官方提供的vue-websocket,或者使用其他开源WebSocket,如socket.io或ws。 2. 创建一个WebSocket客户端对象,并指定要连接到的C++服务器的IP地址和端口号。您可以在Vue组件中创建WebSocket对象,或者在Vue实例中创建全局WebSocket对象。 3. 在Vue中编写发送数据到C++服务器的函数。您可以使用WebSocket对象的send方法发送数据。如果您需要将JSON数据发送到C++服务器,则可以使用JSON.stringify方法将JSON数据转换为字符串。 4. 在C++服务器端编写WebSocket服务器代码。您可以使用WebSocket,例如libwebsockets或uWebSockets,来实现WebSocket服务器。 5. 在C++服务器端编写接收从Vue发送的数据的函数。您可以使用WebSocket提供的回调函数来处理接收到的数据。如果您需要将JSON数据发送回Vue客户端,则可以使用JSON,例如RapidJSON或nlohmann JSON,将JSON数据转换为字符串。 6. 在Vue中编写处理从C++服务器接收的数据的函数。您可以使用WebSocket对象的onmessage事件处理程序来处理接收到的数据。如果您收到的数据是字符串,则可以使用JSON.parse方法将字符串转换为JSON对象。 7. 在Vue组件中使用发送和接收数据的函数。您可以在Vue组件的方法中调用发送数据的函数,并使用Vue组件的数据属性来存储从C++服务器接收的数据。 这些步骤应该能够帮助您在Vue中使用WebSocketC++进行通信。请注意,WebSocket通信需要在C++服务器端和Vue客户端之间建立一个持久连接,因此您需要确保C++服务器端正在运行,并且Vue客户端可以连接到它。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值