【问题标题】:WAMP RPC functions with the same name on different devices不同设备上同名的 WAMP RPC 函数
【发布时间】:2017-08-24 19:15:48
【问题描述】:

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

当我启动第二个设备时,它得到一个错误,因为 RPC 功能已经注册(wamp.error.procedure_already_exists)。

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

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

  • 但是,程序如何生成唯一名称(有没有比循环直到找到唯一名称更复杂的方法)?
  • 另外,更重要的是,调用者如何发现与特定节点关联的过程名称?例如,调用者希望找到所有启动的设备,然后在每个设备上调用 com.myapp.foo

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

【问题讨论】:

    标签: wamp autobahn crossbar


    【解决方案1】:

    生成唯一名称:

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

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

    发现注册程序:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-01
      • 2015-04-03
      • 2013-05-17
      • 2021-04-18
      • 1970-01-01
      • 2013-09-16
      • 2020-01-18
      • 1970-01-01
      相关资源
      最近更新 更多