WAMP RPC在不同设备

时间:2017-08-24 19:15:49

标签: wamp autobahn crossbar

我有一个注册RPC函数的程序,例如。 com.myapp.foo 。然后我在几个独立设备上运行该程序,所有设备都连接到同一个路由器。

当我启动第二个设备时,它会出错,因为RPC函数已经注册(wamp.error.procedure_already_exists)。

这是有道理的,因为路由器需要一个唯一的名称才能正确路由过程调用。但就我而言,

我的第一个想法是每个设备都应该生成一个唯一的过程名称( com.myapp.device4.foo )。

  • 但是,那么程序如何生成一个唯一的名称(除了找到一个唯一的名称之外,还有比循环更复杂的东西)吗?
  • 此外,更重要的是,调用者如何发现与特定节点关联的过程的名称?例如,调用者希望查找所有已启动的设备,然后在每个设备上调用 com.myapp.foo

我在python / asyncio和javascript中工作,两者都使用了高速公路 crossbar.io服务器。

1 个答案:

答案 0 :(得分:1)

生成唯一名称:

  • 使用设备特有的数据点,例如其MAC或序列号。
  • 创建一个足够长的随机字符串,以便实际排除应用程序中的冲突。

第一个变体的优点是过程URL是持久的,并且易于与设备相关联。

发现已注册的程序:

如果您的客户有权访问它,WAMP元API允许查询现有程序 - 请参阅http://crossbar.io/docs/Registration-Meta-Events-and-Procedures/

如果您的网址包含设备的MAC /设备序列号/其他唯一信息,那么您需要知道当前哪些设备已启动。