WebSocket服务端设计
概述
介绍技术选型原因
为了实现加解密网络服务器,为应用服务器提供实时加解密服务,针对服务器通讯协议进行选型,最终选择用WebSocket协议进行网络服务程序的设计。
WebSocket协议优势
(1)较少的控制开销:在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小;
(2)更强的实时性:由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于 HTTP 请求需要等待客户端发起请求服务端才能响应,延迟明显更少;
(3)保持连接状态:与 HTTP 不同的是,WebSocket 需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息;
(4)更好的二进制支持:WebSocket 定义了二进制帧,相对 HTTP,可以更轻松地处理二进制内容;
(5)可以支持扩展:WebSocket 定义了扩展,用户可以扩展协议、实现部分自定义的子协议。
一、使用步骤
(1)创建服务端
QWebSocketServer *m_s;
m_s=new QWebSocketServer("XXXXX", QWebSocketServer::NonSecureMode, this);
(2)监听
m_s->listen(QHostAddress::Any,port);
(3)接收新连接,获得新客户端
QWebSocket *socket=m_s->nextPendingConnection();
(4)接收信息
connect(socketXXX,&QWebSocket::textMessageReceived,this,&threadClassXXX::slotXXXX);
备注:获得新客户端后,传递socket给子线程
new threadClassXXX(socket);
(5)断开连接
检测QWebSocket::disconnected信号,然后
socket->deleteLater()
(6)其他
设置窗口程序名字
setWindowTitle("XXXXX");
二、测试方法
(1)在线工具
websocket在线测试工具
(2)使用Postman
总结
以上就是今天要讲的内容,第一次发布文章,悲喜交加。