WebSocket: Fehler bei der WebSocket-handshake: Gesendet nicht leer "Sec-WebSocket-Protocol" - header, aber keine Antwort empfangen wurde

Ich versuche zu schaffen, eine WS-Verbindung mit meinem tornado-server. Der server-code ist einfach:

class WebSocketHandler(tornado.websocket.WebSocketHandler):

    def open(self):
        print("WebSocket opened")

    def on_message(self, message):
        self.write_message(u"You said: " + message)

    def on_close(self):
        print("WebSocket closed")

def main():

    settings = {
        "static_path": os.path.join(os.path.dirname(__file__), "static")
    }


    app = tornado.web.Application([
            (r'/ws', WebSocketHandler),
            (r"/()$", tornado.web.StaticFileHandler, {'path':'static/index.html'}),
        ], **settings)


    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

Ich kopieren eingefügt, die der client-code von hier:

$(document).ready(function () {
    if ("WebSocket" in window) {

        console.log('WebSocket is supported by your browser.');

        var serviceUrl = 'ws://localhost:8888/ws';
        var protocol = 'Chat-1.0';
        var socket = new WebSocket(serviceUrl, protocol);

        socket.onopen = function () {
            console.log('Connection Established!');
        };

        socket.onclose = function () {
            console.log('Connection Closed!');
        };

        socket.onerror = function (error) {
            console.log('Error Occured: ' + error);
        };

        socket.onmessage = function (e) {
            if (typeof e.data === "string") {
                console.log('String message received: ' + e.data);
            }
            else if (e.data instanceof ArrayBuffer) {
                console.log('ArrayBuffer received: ' + e.data);
            }
            else if (e.data instanceof Blob) {
                console.log('Blob received: ' + e.data);
            }
        };

        socket.send("Hello WebSocket!");
        socket.close();
    }
});

Wenn er versucht zu verbinden, bekomme ich die folgende Ausgabe auf dem browser-Konsole:

WebSocket connection to 'ws://localhost:8888/ws' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received

Warum ist das so?

  • Posten Sie Ihre Verbindung mit dem client-code, oder wir werden zu erraten...
  • Ich benutzte die Chat-1 Protokoll. Schließlich habe ich gelöscht, das Teil, und öffnete die WS ohne Angabe von Protokoll und arbeitet auf diese Weise. Ich bin immer noch interessiert, wie ich das konfigurieren der server-Seite, es zu akzeptieren.
InformationsquelleAutor Midiparse | 2015-12-10
Schreibe einen Kommentar