Ruby on rails Rails API应用程序中ActionCable的Websocket客户端

Ruby on rails Rails API应用程序中ActionCable的Websocket客户端,ruby-on-rails,websocket,ruby-on-rails-5,rails-api,actioncable,Ruby On Rails,Websocket,Ruby On Rails 5,Rails Api,Actioncable,我需要在Rails API(仅限)应用程序中使用Websocket。没有任何页面的服务器端呈现。该应用程序是Angular和Xamarin的纯JSON后端。我看到很多教程在Rails中使用coffescript作为ActionCable客户端,但我的情况并非如此 问题是:如何在Rails的coffescript之外,仅将ActionCable用作API,比如Android、iOS、Angular和React客户端 我找到了不同的有用资源,但我还是有点困惑 1:-这似乎是最好的,但如何找到Acti

我需要在Rails API(仅限)应用程序中使用Websocket。没有任何页面的服务器端呈现。该应用程序是Angular和Xamarin的纯JSON后端。我看到很多教程在Rails中使用coffescript作为ActionCable客户端,但我的情况并非如此

问题是:如何在Rails的coffescript之外,仅将ActionCable用作API,比如Android、iOS、Angular和React客户端

我找到了不同的有用资源,但我还是有点困惑

1:-这似乎是最好的,但如何找到ActionCable框架交换的所有JSON命令?

2:

3:-好的,不是ActionCable,但这家伙已经将coffescript编译成JS并将其移植到项目中。对移动开发没有用处

如果有不同的解决方案或更好的知识,请告诉我。我需要“破解”这个来让它工作


编辑:我也找到了这个回购协议,但如何整合它呢?

我希望我的答案对任何人都有用。我终于发现了一个名为Angular的库,它在Angular项目中帮助了我

但这还不够。对于移动项目,我需要使用“低级”命令与Action Cable server交互

协议在这里:


但是,如果您需要更多信息,您应该深入了解gem。

Actioncable for API only获得了官方支持,有一个名为
Actioncable
的工具,它使用仅API的方法对与Actioncable服务器的通信提供了解耦支持

npm install actioncable
然后在你的反应/角度代码中

import ActionCable from 'actioncable';

# create a connection with the actioncable server
# use ws:// for http and wss:// for https
const cable = ActionCable.createConsumer("ws://your-backend-server.com/cable");
# now you create a subscription
my_subscription = cable.subscriptions.create("MessengerChannel", {
  connected: function() {
    console.log("You've subscribed to the Messenger Channel");
  },
  disconnected: function() {
    console.log("You've disconnected from the Messenger Channel");
  },
  received: function (received_data) {
    # broadcast data from the Messenger channel is received here
    console.log(received_data);
  }
})

在后端,您需要安装actioncable,为此

# routes.rb file
Rails.application.routes.draw do
  mount ActionCable.server => '/cable'
end

使用不带ActionCable的WebSocket会是一种选择吗?如果是的话,考虑一下。它还应该显著提高性能(与ActionCable相比)。@Myst感谢您的回复。该策略并不“那么容易”,因为后端由N个Rails容器组成,负载由Nginx平衡。所以,有一个(或者可能是M,负载平衡)独立的ActionCable服务器,作为独立服务器运行。在这种情况下,我认为Idio或ActionCable是一个性能问题,但我需要重新设计整个应用程序。我会仔细检查宝石的。非常感谢。