如何从服务器终止对actioncable频道的订阅?

有没有办法从服务器端(控制器)终止对任何特定使用者的特定通道的订阅,以便可以调用我的咖啡脚本文件中的断开连接回调?

你可以做这样的事情。

class YourChannel < ApplicationCable::Channel #your code def your_custom_action if something reject_subscription end end end 

http://api.rubyonrails.org/classes/ActionCable/Channel/Base.html#class-ActionCable::Channel::Base-label-Rejecting+subscription+requests

 class ChatChannel < ApplicationCable::Channel def subscribed @room = Chat::Room[params[:room_number]] reject unless current_user.can_access?(@room) end end 

在致电reject之前,您还可以告知订户拒绝原因:

 class ChatChannel < ApplicationCable::Channel def subscribed if params["answerer"] answerer = params["answerer"] answerer_user = User.find_by email: answerer if answerer_user stream_from "chat_#{answerer_user}_channel" else connection.transmit identifier: params, error: "The user #{answerer} not found." # http://api.rubyonrails.org/classes/ActionCable/Channel/Base.html#class-ActionCable::Channel::Base-label-Rejecting+subscription+requests reject end else connection.transmit identifier: params, error: "No params specified." # http://api.rubyonrails.org/classes/ActionCable/Channel/Base.html#class-ActionCable::Channel::Base-label-Rejecting+subscription+requests reject end end end