私は竜巻サーバーとWS接続を作成しようとしています。サーバー・コードは単純です:WebSocket:WebSocketハンドシェイク中にエラーが発生しました:空でない「Sec-WebSocket-Protocol」ヘッダーを送信しましたが、応答がありませんでした
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()
私は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();
}
});
を:
WebSocket connection to 'ws://localhost:8888/ws' failed: Error during WebSocket handshake: Sent non-empty 'Sec-WebSocket-Protocol' header but no response was received
なぜですか?
クライアントの接続コードを投稿すると、私たちは推測します... – Myst
私は 'Chat-1'プロトコルを使いました。最終的に私はその部分を削除し、プロトコルを指定せずにWSを開き、このように動作します。私はまだそれを受け入れるためにサーバー側をどのように構成すべきか興味があります。 – Midiparse