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

JiangYongKang · 2019年05月14日 · 最后由 yfscret 回复于 2019年05月15日 · 778 次阅读

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

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

pynix 回复

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

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

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 的抽象,还不如自己写。

yfractal 回复

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

yfscret 回复

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

9楼 已删除
JiangYongKang 回复

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

JiangYongKang 关闭了讨论 05月17日 09:49
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册