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

WAMP RPC functions with the same name on different devices

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

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

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

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

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

正在生成唯一名称:

  • 使用设备独有的数据点,例如它 MAC 或序列号。
  • 创建一个足够长的随机字符串,几乎可以排除应用程序中的冲突。

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

发现注册程序:

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

如果您的网址包含设备的 MAC/device serial/other 唯一信息,那么您只需要知道哪些设备当前处于运行状态。