2017-01-25 7 views
0

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

Antwort

1

Ok, nach Stunden des Lesens und der Suche ich meinen Fehler finaly gefunden.

Ich benutze Windows mit Kaspersky vorinstalliert auf meinem Schreibtisch, meine Arbeitskollegin mit Linux ohne Antivirus. In seinem Browser funktioniert alles einwandfrei, in meiner einen Verbindung wird sofort geschlossen, wenn versucht wird, eine Nachricht zu erhalten.

Es ist meine Antivirus/Firewall, die http-websockets blockiert.

Lösung: Ich bin jetzt Ussing http s -websockets mit "WSS: // MyIP: 8443/mySite" und seine Arbeit gut. Ein gutes Tutorial ist auch this site here

0

Verwenden Sie einfach nicht Port 8080. Wenn Sie zum Beispiel 8081 verwenden, wird dieser Fehler nicht angezeigt.

Verwandte Themen