我正在使用龙卷风进行实时应用。我正在为此使用 Redis。
当我访问网址时127.0.0.1:8888/2/
其中 2 是我的用户 ID 我收到错误消息can "Upgrade" only to websocket
.
我不知道为什么我会收到此错误。这个错误是因为我的代码还是 websocket 的一些问题?
在我的 javascript 上我正在做ws = new WebSocket("ws://127.0.0.1:8888/" + user_id + "/");
当我做127.0.0.1:8888
它打印我在 RequestHandler 的 get() 函数中打印的内容
需要建议
这是 Tornado 处理 WebSockets 的 GET 方法的开始:
@tornado.web.asynchronous
def get(self, *args, **kwargs):
self.open_args = args
self.open_kwargs = kwargs
# Upgrade header should be present and should be equal to WebSocket
if self.request.headers.get("Upgrade", "").lower() != 'websocket':
self.set_status(400)
self.finish("Can \"Upgrade\" only to \"WebSocket\".")
return
因此,您收到的错误消息是由于您的请求中缺少“升级”标头而引起的,当您在浏览器中简单地获取 URL 时看到此消息,这并不是错误。但是,如果您使用您提供的 JS 代码,然后运行ws.send("message")
例如,您应该能够在 Tornado WebSocketHandler 中捕获并处理此消息:
def on_message(self, message):
print(message) # print the message to a standard output
self.write_message(message) # throw it back to client
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)