我正在创建一个React Native应用,该应用在我的RoR后端api中需要多个actioncable-channels。
我正在使用来自RN的本地Websocket连接到Actioncable,并在服务器端(导轨)中连接actioncable。
它可以很好地处理一个订阅,但是当我尝试在我的应用中打开两个订阅时,只有一个订阅保持打开状态,而另一个订阅则立即关闭。
它实际上在本地主机上工作,但是在heroku上使用“ redistogo”,我只能订阅一个频道。
我在一个视图的两个不同组件中使用了这段代码(使用React导航来处理视图):
ws = new WebSocket(`${ApiConfig.websocket_url}/cable`);
ws.onopen = () => {
const msg = {
command: 'subscribe',
identifier: JSON.stringify({
channel: 'ChatNotificationsChannel',
chat_id: this.state.collaboration_id
})
};
ws.send(JSON.stringify(msg));
};
但是当第二个被打开时(在heroku上)失败了。因此,我尝试在父组件中打开一个连接,然后将连接作为道具发送给两个组件,并在组件中使用this.props.ws
。这也失败了(在heroku上),所以我不确定如何在heroku上一次订阅多个频道,或者甚至不可能。我找不到很多文档。