第一部分:http://blog.csdn.net/qiuchunhuige/article/details/78610289
第二部分:http://blog.csdn.net/qiuchunhuige/article/details/78610306
服务器端的程序与第一部分用的相同,这里就不单列出了。
示例程序下载地址:https://pan.baidu.com/s/1c1XvrLQ
此示例程序实现的功能很简单,就是连接至socket.io服务器,发送一条消息并把接收的消息显示出来
编译之前需要先在pro文件中修改boost的路径,否则会编译失败
第三部分 数据的发送与接收
1. 发送数据
发送数据的核心代码是:_io->socket->Emit(变量1,变量2);
前一个变量是事件名称
如:
QString text="123ABC";
QByteArray bytes = text.toUtf8();
std::string msg(bytes.data(),bytes.length());
_io->socket()->Emit("chat message",msg); //发送"chat message"事件
这段代码实现的功能是发送"chat message"事件,内容为”123ABC”
2. 接收数据
先绑定事件。下面这段代码执行的内容是:当接收到“chat message”事件的时候,执行OnNewMessage函数
#ifdef WIN32
#define BIND_EVENT(IO,EV,FN) \
do{ \
socket::event_listener_aux l = FN;\
IO->on(EV,l);\
} while(0)
#else
#endif
using std::placeholders::_1;
using std::placeholders::_2;
using std::placeholders::_3;
using std::placeholders::_4;
socket::ptr sock=_io->socket();
BIND_EVENT(sock,"chat message",std::bind(&SocketIOClient::OnNewMessage,this,_1,_2,_3,_4));//绑定事件,当接收到chat message事件时,执行OnNewMessage函数
绑定完事件之后,我们就可以编写OnNewMessage函数,处理"chat message"事件。
OnNewMessage函数代码如下,其中第一个参数为事件名称,第二个参数为事件内容。我这里写的处理接收的函数很简单,就是把事件名称和事件内容显示在控制台上
void SocketIOClient::OnNewMessage(std::string const& name,message::ptr const& data,boolhasAck,message::list &ack_resp){ //处理接收消息 name位事件名称,data为事件内容
qDebug()<<"事件名:"<<name.data();
qDebug()<<"事件内容:"<<data->get_string().data();
}
3. 运行效果
Qt客户端执行的内容是开始运行之后链接至服务器,连接成功之后发送“chat message”事件,事件内容为“123ABC”,并接收消息(此客户端代码的链接已在上面贴出)。运行此Qt客户端,同时打开一个网页客户端。可以看到网页客户端接受到了“123ABC”的消息,同时在网页客户端发送了内容为“987650”的“chat message”事件之后,Qt客户端也能成功的接收到这一个事件。
4. 参考资料
http://socket.io/blog/socket-io-cpp/
原文出自:http://blog.sina.com.cn/s/blog_15d207b300102xybz.html