【问题标题】:WebSockets best practice for connecting an external application to push data [closed]连接外部应用程序以推送数据的 WebSockets 最佳实践 [关闭]
【发布时间】:2019-09-01 23:26:47
【问题描述】:

我正在尝试了解如何正确使用 websocket,但似乎遗漏了难题的一些基本部分。

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

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

当用户访问其中一个页面时,他们会获得特定于该页面的提要,即 newsfeed1.html = 体育、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 确定如何处理传入的消息取决于哪个客户端连接到哪个提要并发送到相应的远程客户端浏览器。

或者,CoreApplication.py 是否应该以编程方式与 WebSocketServer.py 连接?因为我似乎找不到任何能够做到这一点的例子,例如使用高速公路或其他简单的网络套接字,因为一旦 WebSocketServer 被实例化,它似乎就在循环中运行并且不接受外部 sendMessage 请求?

所以总结一下这个问题:最佳实践是什么?简单地让 CoreApplication.py 与 WebSocketServer.py 作为客户端(使用特殊的命令数据)进行交互,或者让 CoreApplication.py 通过一些更直接的方法使用已经运行的 WebSocketServer.py 实例(两者都在同一台机器上)无需先与 WebSocketServer.py 服务器建立完整的 websocket 连接即可直接发送消息?

【问题讨论】:

    标签: python websocket


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。问题是我遇到了很多麻烦,甚至试图让 WebSocketServer.py 有一个可调用的方法来发送消息,可以在这里更详细地看到:stackoverflow.com/questions/29955373/… 这让我想也许我正在解决这个问题错误的方式。
    • 嗯,我猜你对这种“事件驱动”编程的东西有一般的问题吗?我不熟悉python和twisted,如果你喜欢,我会使用node.js发布一个示例
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2015-10-19
    • 2019-03-18
    • 2015-07-02
    • 1970-01-01
    • 2010-10-11
    相关资源
    最近更新 更多