WAMP RPC在不同的设备上具有相同的名称

WAMP RPC在不同的设备上具有相同的名称

问题描述:

我有一个程序注册一个RPC函数,例如。 com.myapp.foo。然后我在几个独立的设备上运行这个程序,全部连接到同一个路由器。WAMP RPC在不同的设备上具有相同的名称

当我启动第二个设备时,由于RPC功能已被注册(wamp.error.procedure_already_exists),所以出现错误。

这很有意义,因为路由器需要一个唯一的名称才能正确路由过程调用。但在我的情况下,

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

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

我正在使用python/asyncio和javascript,在 crossbar.io服务器上都使用高速公路。

生成一个唯一的名称:

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

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

发现登记手续:

如果您的客户端有任何权限访问它时,WAMP元API允许查询现有程序 - 见http://crossbar.io/docs/Registration-Meta-Events-and-Procedures/

如果您的网址包含了MAC /设备的串行/等独特信息到设备,那么这就是你需要知道哪些设备正在运行。