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);
}