2016-04-04 99 views
0

我的項目使用WebSocket協議進行通信。服務器端在C中實現,對於客戶端,我使用Qt 4.8.1構建一個簡單的瀏覽器來運行HTML和JavaScript代碼。Websocket客戶端在握手後立即發送[FIN,ACK]

我有一個Qt框架問題。在握手之後,客戶端大小立即向服務器發送[FIN,ACK]以通知關閉會話爲in this picture

我不知道這個問題的原因。我認爲這是Qt框架的錯誤,因爲當我在Firefox瀏覽器中運行客戶端時,它不會發生。 有沒有人有一個想法,爲什麼發生這種情況?

+0

在添加最小測試用例之前,您的問題是無題的。這也是獨立的可能性,你的服務器端被細微的破壞,並沒有完全實現websocket規範。請注意'QWebSocket'只支持協議13。如果你的服務器沒有,它會像你看到的那樣關閉連接。 –

回答

0

Firefox的版本使用的WebSocket RFC6455協議標準(協議版本13),QT 4.8.1使用的WebSocket hybi-00協議標準(無協議版本) https://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00

也許您的服務器正確實施RFC6455協議標準但與hybi-00協議標準不符。請通過記錄您的請求和響應內容(/ key3 /和挑戰數據)進行調試。如果您的服務器生成的質詢數據與客戶端(QT)中的質詢數據不匹配,客戶端將立即發送[FIN,ACK]以關閉套接字。

+0

感謝兄弟!現在它運作良好! –