我正在尝试使用Qt在Windows上连接echo Web套接字服务器。我可以使用java或javascript连接到Web套接字服务器,但Qt不起作用。它陷入握手状态。您可以在下面找到连接到Web套接字服务器的代码段:
qDebug() << "Trying to connect to the Echo Server";
connect(this, SIGNAL(connected()), this, SLOT(onConnected()));
connect(this, SIGNAL(disconnected()), this, SLOT(onClosed()));
connect(this, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(onStateChanged(QAbstractSocket::SocketState)));
connect(this, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onError(QAbstractSocket::SocketError)));
connect(this, SIGNAL(textFrameReceived(QString,bool)), this, SLOT(onTextFrameReceived(QString,bool)));
this->ignoreSslErrors();
this->open((QUrl("ws://echo.websocket.org")));
运行此代码时,控制台显示以下内容:
Trying to connect to the Echo Server
New socket status: QAbstractSocket::ConnectingState
当使用Wireshark检查时,我们发现从客户端到服务器和服务器到客户端的HTTP消息都被发送和接收。之后,我们看不到任何升级到Web套接字协议。
永远不会调用回调函数stateChanged,error或textFrameReceived,状态将保持为Connecting,永远不会连接。我尝试使用Qt 5.7和5.8。编译器是MinGW 5.3.0。操作系统是Windows 10 64位。
提前感谢您的帮助,