以下是我的代码:
class ADDActionCableHelper {
static let actionCable = ADDActionCableHelper()
private var client: ActionCableClient?
var didReceiveJSON: ADDJSONHandler?
var wrChannel: Channel?
private init() {
guard let url = URL(string: ADDConstants.ActionCable.domain) else {
return
}
client = ActionCableClient(url: url)
}
func connectActionCable() {
guard let client = client else {
return
}
client.connect()
}
func subscribeChannel(forAuthToken token: String, forAppointmentID aID: String) {
guard let client = client else {return}
client.onConnected = { [weak self] _ in
guard let strongSelf = self else {return}
/// Create the Room Channel
let parameters = [
ADDConstants.RequestKeys.actionCableAuthToken: token,
ADDConstants.RequestKeys.actionCableAppointmentId: aID
]
strongSelf.wrChannel = client.create(ADDConstants.ActionCable.wrChannelName, identifier: parameters, autoSubscribe: true, bufferActions: true)
/// Channel callbacks
strongSelf.wrChannel?.onReceive = { [weak self] result, error in
guard let strongSelf = self, let result = result else {return}
strongSelf.didReceiveJSON?(JSON(result))
}
}
}
这是我的Action Cable代码。我在我的项目中的多个地方使用它,并且除了在订阅频道时广播消息的一个场景之外它在任何地方工作都很好,onReceive方法不在那里调用,它是否与同步有关?
P.S我正在使用https://github.com/danielrhodes/Swift-ActionCableClient