新手问题 求助,ActionCable 如何作为 WebSocket 客户端来使用?

JiangYongKang · May 14, 2019 · Last by yfscret replied at May 15, 2019 · 1396 hits

Ruby on Rails Guides 中有关于 ActionCable 的文档,但是都是将 ActionCable 作为 WebSocket 作为服务端来使用。假如现在我想要订阅一个第三方服务的 WebSocket,那么是否可以将 ActionCable 作为客户端来使用呢?如果不能,可以推荐给我一些友好的 Gem 吗?

订阅第三方服务,你当然要遵循第三方的协议。。。。AC 协议估计不兼容别的,比如 elixir phoenix channel。

Reply to pynix

第三方服务就是普通的 WebSocket 协议,我的意思是如何用 ActionCable 作为 WebSocket Client?文档上给的例子都是用 ActionCable 作为服务端,CoffeeScript 里面写 JS 作为客户端。

ActionCable 客户端的库就只适用于 ActionCable 服务端的数据格式,你要想实现类似 ActionCable 那样客户端的调用,就要自己去实现订阅,发消息那几个方法。

Reply to w7938940

明白了。但是感觉成本蛮大的😂 。那有其它的 WebSocket Client Gem 推荐吗?

直接用 websocket client 不行吗?把下下来的 js 直接扔到项目中,然后在 js.erb 或者 html.erb 里用就可以呀,你看看https://github.com/sockjs/sockjs-client是不是你需要的

websocket-client-simple,连一两个还好,多了,性能怎么样,就不知道了。

AC 改的话,先要能主动连 ws,收消息要 hack、发消息也要 hack(AC 是对 channel 发消息,然后做广播,client 不需要),还要再配合 AC 的抽象,还不如自己写。

Reply to yfractal

websocket-client-simple 这个挺适合的,目前性能不用考虑,没有太多的频道。非常感谢。

Reply to yfscret

这个反了。我这边的场景是第三方提供了 WebSocket 接口,我需要在服务端订阅第三方的数据。不过还是非常感谢。

9 Floor has deleted

我给你发的就是客户端 不是服务器端 我自己有用过

JiangYongKang closed this topic. 17 May 09:49
You need to Sign in before reply, if you don't have an account, please Sign up first.