2017-01-25 17 views
0

WebSocketがクライアントにメッセージを送信するたびに、クライアントは接続のonClose-functionを呼び出し、メッセージを受信しません。Jetty Websocket - sendString()トリガーonClose(エラー1006 - Websocket Read EOF)

エラーが1006である - WebSocketを読むEOF

私はこの答えgetting the reason why websockets closedの認識していますので、誤差は、ブラウザによって局部的にですが、私は、Firefox(最新)とhtmlを使用していますが、JavaScriptコードは特別なものではありません。

サーバーコールまでsession.getRemote()。sendStringまたはsendStringByFutureクライアントが接続されているようです。 sendString(メッセージ)が呼び出されると、ws.oncloseが常にトリガされます。


サーバー側:

私Websocket.warは、モジュールのデプロイ、HTTP、JSP、クライアントとのWebSocketで桟橋、サーバー上で動作し、私の意見接続に成功したetablishedあります。 (ログを参照)

私はofficial jetty-websocket exampleを取った。 Main.javaを削除しました。を使用してwebsocket-serverをマップするためです。import javax.servlet.annotation.WebServlet;

import javax.servlet.annotation.WebServlet; 
import org.eclipse.jetty.websocket.servlet.WebSocketServlet; 
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; 

@SuppressWarnings("serial") 
@WebServlet(value="/start", asyncSupported = true) 
public class WebServerTest extends WebSocketServlet{ 

    @Override 
    public void configure(WebSocketServletFactory factory) { 
     factory.register(WebSocketTest.class); 
    } 
} 

桟橋-SERVERLOG:

WebSocket Connect: WebSocketSession[websocket=JettyAnnotatedEventDriver[[email protected]],behavior=SERVER,connection=WebSocketServerConne[email protected][[email protected][CONNECTED,!in,out],f=Flusher[queueSize=0,aggregateSize=0,failure=null],g=Generator[SERVER,validating,+rsv1],[email protected][ExtensionStack,s=START,c=0,len=0,f=null]]<[email protected]{/myIP:somePort<->/myIP:8080,OPEN,fill=-,flush=-,to=0/300000}{io=0/0,kio=0,kro=1}->[email protected][[email protected][CONNECTED,!in,out],f=Flusher[queueSize=0,aggregateSize=0,failure=null],g=Generator[SERVER,validating,+rsv1],[email protected][ExtensionStack,s=START,c=0,len=0,f=null]],[email protected][batching=true],incoming=JettyAnnotatedEventDriver[[email protected]],outgoing=ExtensionStack[queueSize=0,extensions=[permessage-deflate],incoming=org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension,outgoing=org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension]] 

私はサーバからクライアントに回答を送信しよう

Echoing back text message [start] 
INFO:oe.WebSocketTest:qtp8420901-11: WebSocket Close: 1006 - WebSocket Read EOF 

クライアント側:

Firefoxは "ws:// myIP:8080/Websocket/start"への接続を確立し、ws.onopenを受け取ることができます。

example.js

try { 
    var ws = new WebSocket("ws://myIP:8080/Websocket/start"); 
} catch(Exception){ altert("Help"); } 

ws.onopen = function() { 
    appendLog("Connected to socket service!"); 
}; 

ws.onmessage = function (evt) { 
    appendLog(evt.data); 
}; 

ws.onclose = function() { 
    appendLog("Disconnected from stock service!"); 
}; 

ws.onerror = function (err) { 
    console.log("ERROR!", err); 
}; 

function appendLog(logText) { 
    var log = document.getElementById("log"); 
    log.value = log.value + logText + "\n"; 
} 

function sendToServer(msg) { 
    ws.send(msg); 
} 

答えて

1

[OK]を、読書や検索の時間後に私はfinaly私のミスを発見しました。

私はKasperskyをWindowsにインストールしています。私のワークデスクにはウイルス対策のないLinuxを使用しています。彼のブラウザでは、すべて正常に動作します。私の1つの接続は、メッセージを受信しようとすると即座に閉じられます。

http-websocketsをブロックするのは私のウイルス対策/ファイアウォールです。

ソリューション:とその作業罰金、私は今、 "::// MYIP 8443 /個人用サイトWSS" とのhttp -websocketsをウッシングいます。 良いチュートリアルもありますthis site here

0

ポート8080を使用しないでください。たとえば、8081を使用する場合、このエラーは表示されません。

関連する問題