diff --git a/src/pysher/pusher.py b/src/pysher/pusher.py index 20046e7..a4dedd6 100644 --- a/src/pysher/pusher.py +++ b/src/pysher/pusher.py @@ -97,6 +97,12 @@ def subscribe(self, channel_name, auth=None): :param str auth: The token to use if authenticated externally. :rtype: pysher.Channel """ + self._subscribe(channel_name, auth) + self.channels[channel_name] = Channel(channel_name, self.connection, auth) + + return self.channels[channel_name] + + def _subscribe(self, channel_name, auth=None): data = {'channel': channel_name} if auth is None: if channel_name.startswith('presence-'): @@ -109,10 +115,6 @@ def subscribe(self, channel_name, auth=None): self.connection.send_event('pusher:subscribe', data) - self.channels[channel_name] = Channel(channel_name, self.connection) - - return self.channels[channel_name] - def unsubscribe(self, channel_name): """Unsubscribe from a channel @@ -147,12 +149,7 @@ def _connection_handler(self, event_name, data, channel_name): def _reconnect_handler(self): """Handle a reconnect.""" for channel_name, channel in self.channels.items(): - data = {'channel': channel_name} - - if channel.auth: - data['auth'] = channel.auth - - self.connection.send_event('pusher:subscribe', data) + self._subscribe(channel_name, channel.auth) def _generate_auth_token(self, channel_name): """Generate a token for authentication with the given channel.