code-prettify

2015年7月15日 星期三

Qt WebSocket

宣告 WebSocketServer
new QWebSocketServer("Web Server", QWebSocketServer::NonSecureMode, this)

使用 listen() 開始接受 client 連線

同樣是使用 newConnection() 接受新的 client 事件
使用 nextPendingConnection() 取得 client 的 socket

QWebSocket 使用 disconnected 斷線事件

因為 WebSocket 規範中有兩種資料傳送方式,純文字模式及二進制模式,
所以資料接收事件也分為兩種,分別為
textMessageReceived,參數為 QString message
binaryMessageReceived,參數為 QByteArray message

傳送資料也分為兩個函式,分別為
sendTextMessage
sendBinaryMessage

簡單範例

connect(m_pWebSocketServer, &QWebSocketServer::newConnection, [=]() {
qDebug() << "new client socket";

QWebSocket* socket = this->m_pWebSocketServer->nextPendingConnection();

connect(socket, &QWebSocket::disconnected, [=]() {
qDebug() << "client socket disconnected";

socket->deleteLater();
});

connect(socket, &QWebSocket::textMessageReceived, [=](QString message) {
qDebug() << "client textMessageReceived";

qDebug() << "Read: " << message;
qDebug() << "Send " << message;

socket->sendTextMessage(message);
socket->close();
});

connect(socket, &QWebSocket::binaryMessageReceived, [=](QByteArray message) {
qDebug() << "client processBinaryMessage";

qDebug() << "Read: " << message;
qDebug() << "Send " << message;

socket->sendBinaryMessage(message);
socket->close();
});
});

m_pWebSocketServer->listen(QHostAddress::Any, 8812);

資料來源
Echo Server Example
http://doc.qt.io/qt-5/qtwebsockets-echoserver-example.html

QWebSocketServer
http://doc.qt.io/qt-5/qwebsocketserver.html

沒有留言:

張貼留言