加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

javascript – Tornado WebSockets – InvalidStateError“

发布时间:2020-12-16 23:54:56 所属栏目:Python 来源:网络整理
导读:我正在写一个web应用程序,我想通过SSL在Tornado WebSockets上从客户端向服务器端发送JSON-Code.当我想建立连接时,Google Chrome会在控制台日志中显示错误: Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING Stat

我正在写一个web应用程序,我想通过SSL在Tornado WebSockets上从客户端向服务器端发送JSON-Code.当我想建立连接时,Google Chrome会在控制台日志中显示错误:

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,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);
    };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读