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

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

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

共收到 9 条回复

订阅第三方服务,你当然要遵循第三方的协议。。。。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
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册