如何通过WAMP / Websockets提供初始数据和后续事件

时间:2015-09-22 20:42:10

标签: websocket synchronization wamp rpc publish-subscribe

我有一个应用程序,我需要向Web客户端发送实时更新。

我目前很高兴通过WAMP协议使用websockets,因为它提供了发布 - 订阅 RPC 方法。< / p>

现在,我发现在很多情况下,当用户启动应用程序或视图时,我需要向客户端发送初始状态,然后继续发送更新。我通过RPC调用执行第一个,后者通过发布 - 订阅执行。

现在,这迫使我为这两种方法编写服务器端和客户端代码,即使我在这两种情况下基本上传达了相同的信息。

在服务器端,我将适当的代码移动到常用方法,但我仍然需要处理发送事件并为RPC调用提供入口点:

# RPC endpoint for getting mission info
def get_mission_info(self):
    return self.get_mission_info()

# Scheduled or manually called method to send mission info to all users
def publish_mission_info(self):
    self.wamp.publish("UPDATE_INFO", [self.get_mission_info()])

def get_mission_info(self):
    # Here we generate a JSON serializable dict with the info
    return info

你可以想象,客户端(JS或Python)显示类似的两面性(两种处理程序方法)。

问题是:有没有更聪明的方法来处理这个问题,并避免使用样板代码?我可以遵循的一些方法,可能会自动将每种类型的最后一个事件发送给要求它的客户,或刚刚订阅的客户?也许是纵横交错的东西?

总的来说,我觉得我可以利用这两个渠道(pub-sub和RPC)做一个更好的状态同步策略。人们是如何做到的?

我的WAMP服务器是Crossbar,我的客户端库在Python和JS中是autobahn.js

0 个答案:

没有答案