Rails API应用程序中的WebSocket客户端

yhqotfr8  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(137)

我需要在我的Rails API(仅限)应用程序中使用WebSocket。没有任何页面的服务器端渲染。该应用程序是Angular和Xamarin的纯JSON后端。我看到很多教程在Rails中使用coffescript作为Cable客户端,但这不是我的情况。
问题是:如何在Rails的coffescript之外仅将JavaScript Cable用作API,例如Android,iOS,Angular和React客户端?
我发现了不同的和有用的资源,但我仍然有点困惑。
1:ActionCable usage for Rails API-看起来是最好的,但是我怎样才能找到所有由Cable框架交换的JSON命令呢?
2:Similar Question to the mine
3:Rails API Websocket GEM- ok,不是coffescript,但这个家伙已经将coffescript编译成JS并将其移植到项目中。对移动的开发没有用。
如果有不同的解决方案或更好的知识,请告诉我。我需要“黑进”它才能工作。

**编辑:**我也发现了这个仓库action-cable-js,但如何集成它?

tpxzln5u

tpxzln5u1#

仅用于API的X1 e0f1x得到了官方支持,并且有一个名为actioncablenpm package,它使用仅用于API的方法对与actioncable服务器的通信提供了解耦支持。

npm install actioncable

然后在react/angular代码中,

import ActionCable from 'actioncable';

# create a connection with the actioncable server
# use ws:// for unencrypted and wss:// for encrypted connection(just like http and https, respectively)
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
gijlo24d

gijlo24d2#

我希望我的回答对任何人都有帮助。我终于发现了一个名为actioncable-js的库,它在Angular项目中帮助了我。
但这还不够。对于移动的项目,我需要使用“低级别”命令与行动电缆服务器进行交互。
协议在这里:议定书
但如果你想了解更多,你应该深入了解宝石。

相关问题