Próbuję utworzyć połączenie WS z moim serwerem tornado. Kod serwera jest prosta:WebSocket: Błąd podczas uzgadniania WebSocket: wysłano niepusty nagłówek "Sec-WebSocket-Protocol", ale nie otrzymano odpowiedzi
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()
kopiować wklejony kod klienta z 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();
}
});
Gdy próbuje się połączyć i uzyskać następujące dane wyjściowe na konsoli przeglądarki:
WebSocket connection to 'ws://localhost:8888/ws' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received
Dlaczego tak jest?
Po przesłaniu kodu połączenia klienta, inaczej zgadujemy ... – Myst
Użyłem protokołu 'Chat-1'. W końcu usunąłem tę część i otworzyłem WS bez określania protokołu i działa w ten sposób. Wciąż jestem zainteresowany tym, jak powinienem skonfigurować stronę serwera, aby ją zaakceptować. – Midiparse