Tornado:动态地向javascript页面发送websocket消息?

Tornado:动态地向javascript页面发送websocket消息?,web,websocket,tornado,Web,Websocket,Tornado,我在服务器a上有一个简单的python进程,它从服务器B检索数据 收集数据后,我希望能够将websocket消息发送到服务器C上的javascript页面。示意图: A ---send data---> B -----send websocket message ---> C 如何“动态”向服务器C发送新的websocket消息?是否可以这样做,或者我必须首先从Javascript页面接收消息,然后发送回响应 我正在使用tornado,但我不知道如何实例化并调用write\u me

我在服务器a上有一个简单的python进程,它从服务器B检索数据

收集数据后,我希望能够将websocket消息发送到服务器C上的javascript页面。示意图:

A ---send data---> B -----send websocket message ---> C
如何“动态”向服务器C发送新的websocket消息?是否可以这样做,或者我必须首先从Javascript页面接收消息,然后发送回响应

我正在使用tornado,但我不知道如何实例化并调用
write\u message()
函数。在我看到的每个示例中,都没有此类的显式实例化,例如:

app = web.Application([ ('/ws', WebSocketHandler, ), ]) # the class is just declared
我该怎么做?作为web开发的新手,Tornado在我看来非常复杂


谢谢

浏览器必须始终启动websocket连接。它不必发送第一条消息;它可以打开连接,坐在那里等待来自服务器的消息,但浏览器必须始终启动该过程(因为浏览器知道如何与服务器对话,但服务器除了响应浏览器的请求外,无法与浏览器对话)

浏览器必须始终启动websocket连接。它不必发送第一条消息;它可以打开连接,坐在那里等待来自服务器的消息,但浏览器必须始终启动该过程(因为浏览器知道如何与服务器通话,但服务器除了响应浏览器的请求外,无法与浏览器通话)

谢谢。这是否意味着我必须实现某种心跳机制,以便客户端定期轮询服务器以获取新数据?客户端不需要轮询,只需要创建一个websocket连接并保持打开状态(如果失败,则重新打开)。那么服务器就可以把东西推到它上面了。好吧,但这就是我最初问题的目的:在WebSocketHandler类实例化之后,似乎没有办法显式调用tornado write_message()函数……服务器应该如何显式地将消息写入客户端,连接打开后,不一定是客户端消息到达时?感谢在
open()
回调中,您可以保存对
WebSocketHandler
对象的引用,并稍后在其上调用
write_message
。当客户端连接时,它会为您实例化。再见,谢谢。这是否意味着我必须实现某种心跳机制,以便客户端定期轮询服务器以获取新数据?客户端不需要轮询,只需要创建一个websocket连接并保持打开状态(如果失败,则重新打开)。那么服务器就可以把东西推到它上面了。好吧,但这就是我最初问题的目的:在WebSocketHandler类实例化之后,似乎没有办法显式调用tornado write_message()函数……服务器应该如何显式地将消息写入客户端,连接打开后,不一定是客户端消息到达时?感谢在
open()
回调中,您可以保存对
WebSocketHandler
对象的引用,并稍后在其上调用
write_message
。当客户端连接时,它会为您实例化。看见