我正在使用Android(Java)TooTallNate's java websockets從this tutorial使用android上的websockets與ws://
連接,但我收到錯誤draft [email protected] refuses handshake
。我嘗試了他們的其他草稿版本,但他們都沒有工作。Java websocket稿件拒絕握手
4
A
回答
0
你試過這個在瀏覽器上嗎?你會在大衣上看到一個錯誤的代碼。
您可以編寫一個簡單的js文件來啓動並測試此問題是在服務器上還是在應用程序上。
這是一個演示,它不會佔用你太多的時間。
<script type="text/javascript">
function send() {
var url = 'ws://192.168.1.101:8080/WebSocket/echo';
var vs = new WebSocket(url);
vs.onopen = function(evt){
vs.send(te.value)
};
vs.onmessage = function(evt){
alert(evt.data);
};
}
+0
服務器已經有一個完美的工作瀏覽器/網站版本,所以我假設服務器是好的,我做了一個網站的原生android副本。 – CookieMonster
0
首先,你要使用的Draft6455,它是當前規格,其餘可能會或可能不會在不同服務器上運行可靠。
不過,我遇到了與TooTallNate的Java的WebSockets的最新版本類似的問題,我的代碼是像這樣:
knownExtensions = new java.util.ArrayList();
knownProtocols = new java.util.ArrayList();
if(this._protocol){
knownProtocols.add(new org.java_websocket.protocols.Protocol(this._protocol));
}
this._socket = new _WebSocket(uri, new org.java_websocket.drafts.Draft_6455(knownExtensions, knownProtocols), toHashMap(this._headers), this._timeout);
問題結束了,當你在knownProtocols列表發送,您必須至少有一個有效的協議(即使它是一個空字符串),或者你得到你引用的上述錯誤。所以我改變我的代碼是:
...
if(this._protocol){
knownProtocols.add(new org.java_websocket.protocols.Protocol(this._protocol));
}
/* -=-=-=- NEW ADDED CODE -=-=-=- */
else {
knownProtocols.add(new org.java_websocket.protocols.Protocol(""));
}
/* -=-=-=- END NEW ADDED CODE -=-=-=- */
...
這是什麼壞了,沒有指定協議導致「拒絕握手」錯誤消息對我來說。
請注意,有幾個原因,上述的「拒絕握手」,但在我的情況下,它是缺失的空白協議...
相關問題
- 1. 的WebSocket握手
- 2. AS3 Websocket握手
- 3. SSL握手後拒絕連接
- 4. 鉻WebSocket的握手
- 5. Websocket握手錯誤
- 6. WebSocket握手失敗
- 7. websocket握手問題
- 8. Chrome 20 websocket握手
- 9. JS WebSocket和Java之間的握手
- 10. WebSocket握手不工作
- 11. 如何完成WebSocket握手?
- 12. WebSocket握手期間出錯
- 13. 與PHP websocket的Socket.io握手?
- 14. 握手時的python websocket 404
- 15. Websocket握手狀態426
- 16. 握手後的Websocket消息
- 17. Websocket握手掛起HAProxy
- 18. Sha1的C++ Base64 - WebSocket握手
- 19. SocketIO websocket握手與RFC 6455
- 20. Websocket握手不起作用
- 21. WebSocket握手錯誤淨:: ERR_CONNECTION_RESET
- 22. WebSocket的護欄,WebSocket的握手錯誤
- 23. 如何拒絕websocket連接?
- 24. Tyrus websocket服務器握手問題?
- 25. Geode身份驗證產生服務器拒絕握手
- 26. WebSocket客戶端無法握手
- 27. Python服務器Websocket握手響應
- 28. NodeJS WebSocket握手無聲失敗?
- 29. Websocket握手期間的Rails ActionCable錯誤
- 30. 在PHP中如何實現WebSocket握手?
是你設法解決這個問題? – Andrii
2017年底我仍然面臨這個 – Jimmy
找到了解決辦法。在端點的末尾添加/ websocket。當您使用ShockJs時,它將額外的字符串添加到您的端點。所以,如果沒有,你打錯了端點,這是有效的只適用於基於瀏覽器的應用程序(預期http200而不是101) – Jimmy