WebSockets连接外部应用程序以推送数据的最佳实践

时间:2015-04-30 12:19:34

标签: python sockets websocket dynamic-websites

我试图理解如何正确使用websockets,似乎错过了这个难题的一些基本部分。

假设我有一个包含3个不同页面的网站:

  • newsfeed1.html
  • newsfeed2.html
  • newsfeed3.html

当用户访问其中一个页面时,他们会获得特定于页面的Feed,即newsfeed1.html = sport,newsfeed2.html =世界新闻等。

有一个CoreApplication.py可以完成获取数据和解析等所有操作。

然后有一个WebSocketServer.py,使用说Autobahn。

我看过的所有示例,很多,似乎只是对来自WebSocketServer.py中的客户端(浏览器)的消息作出反应,想想聊天回声示例。因此,客户端浏览器会发送聊天消息,并将其回显或广播到所有连接的客户端浏览器。

我想弄清楚的是以下两个组成部分:

  • CoreApplication.py

  • WebSocketServer.py

如何最好地使CoreApplication.py与WebSocketServer.py通信,以便向连接的用户发送消息。

通常,CoreApplication.py应该将命令消息作为客户端发送到WebSocketServer.py。例如:

CoreApplication.py - >连接到WebServerSocket.py作为普通客户端 - >发送Json命令消息(如广播消息X给所有用户||发送消息Y到特定远程客户端) - > WebSocketServer.py确定如何处理传入消息,具体取决于哪个客户端连接到哪个源并根据远程客户端浏览器发送。

OR,CoreApplication.py应该以编程方式与WebSocketServer.py连接吗?因为我似乎无法找到能够使用Autobahn或其他简单Web套接字执行此操作的任何示例,因为一旦WebSocketServer被实例化,它似乎在循环中运行并且不接受外部sendMessage请求?

总结一下这个问题:最佳做法是什么?简单地使CoreApplication.py作为客户端(使用特殊命令数据)与WebSocketServer.py交互,或者通过更直接的方法使CoreApplication.py使用已经运行的WebSocketServer.py实例(两者都在同一台机器上)直接sendMessages而不必先将完整的websocket连接到WebSocketServer.py服务器?

1 个答案:

答案 0 :(得分:0)

这取决于您的软件设计,如果您决定WebSocketServer.px和CoreApplication.py的逻辑属于一起,请合并它。

如果没有,您需要某种进程间通信(ipc)。 您可以为此ipc使用websockets,但我建议您使用更简单的东西。例如,您可以通过tcp或unix域json-rpc将控制消息从CoreApplication.py发送到WebSocketServer.py