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)。
- 但是,程序如何生成唯一名称(有没有比循环直到找到唯一名称更复杂的方法)?
- 此外,更重要的是,调用者如何发现与特定节点关联的过程的名称?例如,调用者想要找到所有启动的设备,然后在每个设备上调用 com.myapp.foo。
我在 python/asyncio 和 javascript 工作,都使用高速公路
crossbar.io 服务器。
正在生成唯一名称:
- 使用设备独有的数据点,例如它 MAC 或序列号。
- 创建一个足够长的随机字符串,几乎可以排除应用程序中的冲突。
第一个变体的优点是过程 URL 是持久的并且易于与设备相关联。
发现注册程序:
如果您的客户有权访问它,WAMP 元 API 允许查询现有程序 - 请参阅 http://crossbar.io/docs/Registration-Meta-Events-and-Procedures/
如果您的网址包含设备的 MAC/device serial/other 唯一信息,那么您只需要知道哪些设备当前处于运行状态。
我有一个注册 RPC 函数的程序,例如。 com.myapp.foo。然后我 运行 这个程序在几个独立的设备上,都连接到同一个路由器。
当我启动第二个设备时,出现错误,因为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/device serial/other 唯一信息,那么您只需要知道哪些设备当前处于运行状态。