现在的情况是这样,tornado的7999端口同时运行着两个app,一个http协议,一个websocket协议,localhost上均正常,但是在服务器上,websocket无法握手成功,直接timeout,各位有相关的经验吗?
前端代码:
//初始化weosocket
initWebSocket(){
if(this.websocket === null || this.websocket === undefined){
const config = require('../../../config');
const endpoint = location.hostname + ":" + config.dev.endport;
const wsuri = 'ws://'+ endpoint + "/connect"
this.websocket = new WebSocket(wsuri);
this.websocket.onopen = this.websocketonopen;
this.websocket.onerror = this.websocketonerror;
this.websocket.onmessage = this.websocketonmessage;
this.websocket.onclose = this.websocketclose;
}
},
websocketonopen() {
console.log("WebSocket连接成功");
},
后端代码:
if __name__ == '__main__':
tornado.options.define("port", default=7999, help="run on the given port", type=int)
tornado.options.parse_command_line(sys.argv)
flask_wsgi_app = tornado.wsgi.WSGIContainer(app)
mixed_app = tornado.web.Application([
('/connect', ConnectionHandler),
('.*', tornado.web.FallbackHandler, dict(fallback=flask_wsgi_app))
])
http_server = tornado.httpserver.HTTPServer(mixed_app)
http_server.listen(tornado.options.options.port)
tornado.ioloop.IOLoop.instance().start()
“服务器”环境,连接不一定是直接到你的 tornado ,前面可能有其它设备,这些设备不一定支持 websocket 。
先确认下环境问题吧。