让 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 中的类之间传递数据