|  | @@ -131,11 +131,13 @@ func (c *Connection) listenTopis() {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// Send LISTEN request
 | 
	
		
			
				|  |  | -	msg := Answer{Type: Listen, Data: AnswerDataTopics{Topics: topics}}.JSON()
 | 
	
		
			
				|  |  | -	if err := c.Connection.WriteMessage(websocket.TextMessage, msg); err != nil {
 | 
	
		
			
				|  |  | -		c.onError(err)
 | 
	
		
			
				|  |  | -		c.active = false
 | 
	
		
			
				|  |  | -		c.onDisconnect()
 | 
	
		
			
				|  |  | +	if c.Connection != nil {
 | 
	
		
			
				|  |  | +		msg := Answer{Type: Listen, Data: AnswerDataTopics{Topics: topics}}.JSON()
 | 
	
		
			
				|  |  | +		if err := c.Connection.WriteMessage(websocket.TextMessage, msg); err != nil {
 | 
	
		
			
				|  |  | +			c.onError(err)
 | 
	
		
			
				|  |  | +			c.active = false
 | 
	
		
			
				|  |  | +			c.onDisconnect()
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -169,11 +171,13 @@ func (c *Connection) RemoveTopic(topic string) {
 | 
	
		
			
				|  |  |  	delete(c.topics, topic)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// Send UNLISTEN request
 | 
	
		
			
				|  |  | -	msg := Answer{Type: Unlisten, Data: AnswerDataTopics{Topics: []string{topic}}}.JSON()
 | 
	
		
			
				|  |  | -	if err := c.Connection.WriteMessage(websocket.TextMessage, msg); err != nil {
 | 
	
		
			
				|  |  | -		c.onError(err)
 | 
	
		
			
				|  |  | -		c.active = false
 | 
	
		
			
				|  |  | -		c.onDisconnect()
 | 
	
		
			
				|  |  | +	if c.Connection != nil {
 | 
	
		
			
				|  |  | +		msg := Answer{Type: Unlisten, Data: AnswerDataTopics{Topics: []string{topic}}}.JSON()
 | 
	
		
			
				|  |  | +		if err := c.Connection.WriteMessage(websocket.TextMessage, msg); err != nil {
 | 
	
		
			
				|  |  | +			c.onError(err)
 | 
	
		
			
				|  |  | +			c.active = false
 | 
	
		
			
				|  |  | +			c.onDisconnect()
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// No topics, close connection
 | 
	
	
		
			
				|  | @@ -203,6 +207,11 @@ func (c *Connection) Topics() []string {
 | 
	
		
			
				|  |  |  	return topics
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// TopicsCount return count of topics.
 | 
	
		
			
				|  |  | +func (c *Connection) TopicsCount() int {
 | 
	
		
			
				|  |  | +	return len(c.topics)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // Close is close connection and shutdown all goroutines.
 | 
	
		
			
				|  |  |  // Usually it's need to call before destroying.
 | 
	
		
			
				|  |  |  func (c *Connection) Close() error {
 |