                 target: self, selector: "sendHeartbeat", userInfo: nil, repeats: true)
         } else {
             log("Connecting to", socket.currentURL)
+            channels.forEach { $0.status = .Joining }
             socket.connect()
         }
     }

    
    public func join(channel: Channel) {
        channels.insert(channel)
        sendJoinEvent(channel)
    }
    
    private func sendJoinEvent(channel: Channel) {

        
        log("Joining channel:", channel.topic)
        let payload = channel.joinPayload ?? [:]
        // Use send message to skip channel joined check
        sendMessage(Message(Event.Join, topic: channel.topic, payload: payload)) { [weak self] result in
            switch result {
