如何在Channel Controller中断开ActionCable连接?
如何在ActionCable的Channel Controller中断开连接
直接在subscribed方法里return无法断开已建立的连接,因为return只是终止方法执行,不会主动关闭连接。要实现条件不满足时断开连接,你可以调用reject方法——它会主动触发连接断开,同时客户端会收到连接被拒绝的通知。
修改后的代码示例:
class MyChannel < ApplicationCable::Channel def subscribed #### reject unless condition #### stream_from "mychannel_#{params[:id]}" end def unsubscribed # Any cleanup needed when channel is unsubscribed end end
调用reject后,服务器会立即关闭当前连接,若客户端实现了rejected回调(在cable.subscriptions.create的配置中),该回调会被触发,以此完成条件校验失败时的连接断开逻辑。
内容的提问来源于stack exchange,提问作者jvx8ss
相关产品推荐
相关产品推荐

