2017-08-24 169 views
0

我有一個程序註冊一個RPC函數,例如。 com.myapp.foo。然後我在幾個獨立的設備上運行這個程序,全部連接到同一個路由器。WAMP RPC在不同的設備上具有相同的名稱

當我啓動第二個設備時,由於RPC功能已被註冊(wamp.error.procedure_already_exists),所以出現錯誤。

這很有意義,因爲路由器需要一個唯一的名稱才能正確路由過程調用。但在我的情況下,

我的第一個想法是,每個設備應該生成一個獨特的過程名稱(com.myapp.device4.foo)。

  • 但是,那麼程序如何生成一個唯一的名稱(是否有比循環更復雜的東西,直到找到一個唯一的名稱)?
  • 此外,更重要的是,調用者將如何發現與特定節點關聯的過程的名稱?例如,主叫方會希望查找所有已啓動的設備,然後在每個設備上撥打com.myapp.foo

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

回答

1

生成一個唯一的名稱:

  • 使用獨有的數據點以的裝置中,例如其MAC或序列號。
  • 創建一個足夠長的隨機字符串,以便實際排除應用程序中的衝突。

第一個變體的優點是過程URL是持久的,並且易於與設備關聯。

發現登記手續:

如果您的客戶端有任何權限訪問它時,WAMP元API允許查詢現有程序 - 見http://crossbar.io/docs/Registration-Meta-Events-and-Procedures/

如果您的網址包含了MAC /設備的串行/等獨特信息到設備,那麼這就是你需要知道哪些設備正在運行。

相關問題