日期:2014-05-16  浏览次数:20421 次

基于Qt-socketio客户端与Nodejs服务器通讯
       Node.Js现在很火?是的,它现在属于后台服务器比较火的方案之一,废话不多说,想了解nodejs自己google去查查,基于javascript的后台服务器框架
       最近要做PC客户端的IM工作,而恰好后端使用的nodejs的,做即时通讯等功能,对于nodejs来说应该是绰绰有余,单线程下的高并发,适合创业公司学习。
       今天上午本来打算使用Qt下面的QTcpSocket来与后端socket.io建立链接,不曾想,简单的socket链接 是无法满足于现状,于是乎,网上找,群内问,终于找到了基于Qt下面的websocket的例子,可惜我现在Qt版本是5.2.1,但是Qt5.3已经将websocket模块集成到啦Qt框架里面啦,真是蛋疼的不得不用最新的,本来想使用QWebsocket源码进行编译,然后与QSocketIO源码进行编译成可用的动态库,但是不曾想,里面的坑太多,只得安装新的Qt5.3Beta包,才得以用之。
       现在主要说下QSocketIO的开源代码,代码地址:QSocketIO,老外写的开源的东东,分享精神不错,还是有QWebsocket这个本来是他开源的,后来直接被Qt收录囊中,直接集成到模块,Qt真是个大杂烩,集开源代码于一身。
       要使用socket.io QSocketIO已经有例子告诉你如何写。
       简单说下Qt部分

#include "echoclient.h"
#include <QtSocketIo/QSocketIOClient>
#include <QtCore/QJsonObject>
#include <QtCore/QJsonArray>
#include <QtCore/QDebug>

#define function(args...) [=](args)

EchoClient::EchoClient(QObject *parent) :
    QObject(parent),
    m_client()
{
    QObject::connect(&m_client, SIGNAL(connected(QString)), this, SLOT(connected(QString)));
    QObject::connect(&m_client, SIGNAL(disconnected(QString)), this, SLOT(disconnected(QString)));
    QObject::connect(&m_client, SIGNAL(errorReceived(QString,QString)), this, SLOT(errorReceived(QString,QString)));