让 Tornado Websocket 运行 render()

Posted

技术标签:

【中文标题】让 Tornado Websocket 运行 render()【英文标题】:Get Tornado Websocket to run render() 【发布时间】:2016-08-01 16:38:35 【问题描述】:

使用 Websockets,我试图在每次服务器 ping 时重新渲染页面,这是我不断收到的错误:

File "/usr/local/lib/python3.4/dist-packages/tornado/web.py", line 781, in render
self.finish(html)
RuntimeError: Method not supported for Web Sockets

有什么办法可以解决这个问题吗?有什么办法我可以打电话给render,而不用最后打电话给finish()

【问题讨论】:

【参考方案1】:

不支持该方法,因为render 将其写入为 HTTP 响应,一旦您将连接从 HTTP 转换为 WebSockets,就无法执行此操作。最接近的等价物是 self.write_message(self.render_string('foo.html')),在浏览器中使用 javascript 代码接收这些消息并替换页面内容。

【讨论】:

以上是关于让 Tornado Websocket 运行 render()的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Tornado websocket 客户端接收服务器通知?

Python Tornado Websocket 处理程序在接收数据时阻塞

Python Tornado WebSocket:不在第二个网络接口上工作

在 Tweepy 和 Tornado WebSocket 中的类之间传递数据

同时使用 Python Tornado 后端、WebSocket 监听器和 MQTT 客户端

Tornado-长轮询_webSocket