如何使用Actioncable客户端访问较低的频道?

时间:2017-02-21 07:25:50

标签: android ruby-on-rails websocket actioncable

我在Android应用中使用此操作有线电视库https://github.com/hosopy/actioncable-client-java,我已经能够与顶级频道建立连接。但是,我似乎无法访问较低的频道。这就是我的端点看起来像http:/ endpoint / domains / 1 / subject。

我可以访问“DomainsChannel”,但是有谁知道如何传递域ID 1并访问主题频道?

    ws:/endpoint/domains/1/subjects

    Channel subjectsChannel = new Channel("DomainsChannel");  

1 个答案:

答案 0 :(得分:1)

如何将其他参数传递到here所述的ActionCable频道。

在Rails项目中,它足以通过以下方式传递频道名称和其他参数:

{ channel: "DomainsChannel", id: "domain-id-here" }

但是从第三方客户端(例如Android和iOS),你需要做一个小技巧来订阅ActionCable的频道。 建立与WebSocket的连接后,您可以发送包含以下内容的消息来订阅该频道:

{
  "command":"subscribe",
  "identifier":"{\"channel\":\"DomainsChannel\"}"
}

注意"identifier"值是字符串,不是JSON 它是字符串,看起来像JSON。

所以我想你可以将"identifier"延伸到id里面:

{
  "command":"subscribe",
  "identifier":"{\"channel\":\"DomainsChannel\",\"id\":\"domain-id-here\"}"
}

最初我的想法在我的blog post中有描述。

我希望有所帮助。