gpt4 book ai didi

javascript - Tornado WebSockets - InvalidStateError "Still in CONNECTING State"

转载 作者:太空狗 更新时间:2023-10-30 01:15:08 27 4
gpt4 key购买 nike

我正在编写一个 Web 应用程序,我想在其中使用 SSL 通过 Tornado WebSockets 从客户端向服务器端发送 JSON 代码。当我想建立连接时,谷歌浏览器在控制台日志中显示错误:

Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING State. 

我的 python 服务器看起来像这样:

from tornado import websocket, web, ioloop
import json
from sqlite3functions import *


class SocketHandler(websocket.WebSocketHandler):
def on_message(self, message):
handleRequest(self, json.loads(message), True)
print(message)

def handleRequest(obj, message, isWebsock):
...


def writeResponse(obj, message, isWebsock):
if (isWebsock):
obj.write_message(message)
else:
print(message)
obj.write(message)
print('msg sent')

app = web.Application([
(r'/w', SocketHandler)
])

if __name__ == "__main__":
app.listen(8888)
ioloop.IOLoop.instance().start()

我的客户:

var ws;

function connect() {
ws = new WebSocket('wss://127.0.0.1:8888/w');
ws.onopen = function()
{
ws.send("Message to send");

};
}


$(document).ready(function() {
connect();

$("#Button").on('click', function() {
...
ws.send(data);
});
});

谢谢

最佳答案

在连接就绪状态之前不要让您的套接字发送数据。

这些功能可能会有所帮助:

function sendMessage(msg) {
waitForSocketConnection(nvWS, function() {
ws.send(msg);
});
};


function waitForSocketConnection(socket, callback){
setTimeout(
function(){
if (socket.readyState === 1) {
if(callback !== undefined){
callback();
}
return;
} else {
waitForSocketConnection(socket,callback);
}
}, 5);
};

关于javascript - Tornado WebSockets - InvalidStateError "Still in CONNECTING State",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com