一旦订阅了频道,就会在广播消息时调用onReceive动作电缆

时间:2018-03-06 06:14:44

标签: ios swift sockets actioncable

以下是我的代码:

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

0 个答案:

没有答案