Sto provando a creare una connessione WS con il mio server tornado. Il codice del server è semplice:WebSocket: errore durante l'handshake WebSocket: l'intestazione 'Sec-WebSocket-Protocol' non vuota non è stata ricevuta
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()
copio incollato il codice del client da here:
$(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();
}
});
Quando si tenta di connettersi ottengo il seguente output su console del browser:
WebSocket connection to 'ws://localhost:8888/ws' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received
Perché è quello?
Invia il tuo codice di connessione client, o indovineremo ... – Myst
Ho usato il protocollo 'Chat-1'. Alla fine ho cancellato quella parte e aperto il WS senza specificare il protocollo e funziona in questo modo. Sono ancora interessato a come dovrei configurare il lato server per accettarlo. – Midiparse