我'要達到C的一個開源的cometd庫,才能夠勉強任何設備上運行的cometd客戶端後,400錯誤。服務器讓HTTP的WebSocket握手請求
的Long_Polling技術握手,並與服務器進行通信已經完成,因此在邏輯上我得給WebSocket的選項給用戶。
所以我拿來國米Web和撞到了NoPoll庫,幫助我出去WebSocket的一部分。
由於NoPoll現在我可以到達服務器敲他的門,但是當我嘗試用它來握手,我總是得到這個400錯誤:
這是我握手:
GET ws://m.zpush.ovh:8080/str/strd HTTP/1.1
Host: m.zpush.ovh:8080
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Extension: permessage-deflate;client_max_window_bits
Sec-WebSocket-Key: Z0WLawAAAADGI3syAAAAAA==
Origin: null
Cookie: BAYEUX_BROWSER=56a9-mchhnynonz6ji8a6hs1sh49; JSESSIONID=8gz8e00htqrl15vcm3o9yi95f
Sec-WebSocket-Version: 13
這裏是碼頭錯誤:
WARN:oejh.HttpParser:qtp1213415012-14: badMessage: 400 for [email protected]{r=0,c=false,a=IDLE,uri=-}
所以,我再次得到了CYBERNET但我沒有發現任何關於它的線索。 從我讀的碼頭通常給出更準確的錯誤信息,但你會同意這一個是非常模糊的。
它不告訴我爲什麼,我應該修復什麼來實現握手。但我懷疑我缺少HandShake格式的東西。
,我不知道的另一件事是,它說:「HttpParser」但我'找一個WebSocket的握手。
任何光上這將是大加讚賞,並一如既往當我得到一個答案我正確地使用給定的答案,以幫助他人開發者和給他們一些代碼站在稍作教程。
PS:如果需要的話,我可以在GitHub上上傳我的代碼。
謝謝你的時間。
一如既往地感謝您的快速回答。關於服務器配置錯誤,我完全可以這麼說,但我對此表示懷疑,因爲它與Java和JavaScript一起工作良好,是否與來自C客戶端的請求有區別?因爲我通過Tcp協議發送我的握手而不是http。感謝您的時間。 –
我使用telnet通過TCP測試了您的升級,並且您只能通過TCP發送HTTP請求,所以如果您做得對,語言不是問題。 – sbordet