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 /设备的串行/等独特信息到设备,那么这就是你需要知道哪些设备正在运行。