Jedes Mal, wenn mein WebSocket eine Nachricht an meinen Client sendet, ruft der Client die onClose-Funktion für die Verbindung auf und empfängt die Nachricht nicht.Jetty Websocket - sendString() triggert onClose (Fehler 1006 - Websocket EOF lesen)
Fehler ist 1006 - Websocket lesen EOF
Ich kenne diese Antwort getting the reason why websockets closed, so Fehler ist lokal durch Browser, aber ich bin mit Firefox (neueste) und HTML und JavaScript-Code ist nichts Besonderes.
Bis der Server ruft session.getRemote(). SendString oder sendStringByFuture Client scheint verbunden zu sein. Wenn sendString (Nachricht) aufgerufen wird, wird ws.onclose immer ausgelöst!
Die Seite Server:
Mein Websocket.war läuft auf einem Steg-Server mit Modul deploy, http, jsp, Client und websocket und meiner Meinung nach Verbindung erfolgreich NIEDERGELASSEN. (Siehe Protokoll)
Ich nahm die official jetty-websocket example. Ich löschte Main.java, weil ich den WebSocket-Server mit zuordnen 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);
}
}
Jetty-ServerLog:
WebSocket Connect: WebSocketSession[websocket=JettyAnnotatedEventDriver[[email protected]],behavior=SERVER,[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]]
Wenn ich versuche, eine Antwort vom Server an den Client zu senden
Echoing back text message [start]
INFO:oe.WebSocketTest:qtp8420901-11: WebSocket Close: 1006 - WebSocket Read EOF
der Client-Seite:
Firefox kann eine Verbindung zu "ws: // myIP: 8080/Websocket/start" herstellen und erhält eine 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);
}