 		do {
 			let message: Message = try Unbox(messageData)
 
-			for channel in channels where channel.topic == message.topic {
+			for channel in channels where channel.isMemberOfTopic(message.topic) {
 
 				channel.triggerEvent(
 					message.event,

	- parameter heartbeatInterval:	Once connected, this is the interval at which we will tell the server that we're still listening. Default value is nil. If nil or <= 0.0, a heartbeat won't be used, and the socket will organically disconnect.
	- parameter reconnectInterval:	The interval after which we should try to reconnect after a socket disconnects.
	*/
	public init(url: NSURL, heartbeatInterval: NSTimeInterval? = nil, reconnectInterval: NSTimeInterval = 5.0) {
		self.url = url
		self.heartbeatInterval = heartbeatInterval
		self.reconnectInterval = reconnectInterval

		queue.suspended = true
	}

	public func connect<T: QueryStringConvertible>(params: [T: T]) {

		reconnectTimer = nil
	}

	/**
	<#Description#>

	- parameter message:	<#message description#>

	- throws: If message couldn't successfully be converted to JSON.
	*/
	func push(message: Message) throws {
		let dict: [String: AnyObject] = try Wrap(message)
		let jsonData = try NSJSONSerialization.dataWithJSONObject(dict, options: [])
		print(dict)
		queue.addOperationWithBlock { [weak self] in
			self?.socket?.send(jsonData)
		}
