# File lib/pusher-client/socket.rb, line 93
    def subscribe(channel_name, user_data = nil)
      if user_data.is_a? Hash
        user_data = user_data.to_json
      elsif user_data
        user_data = {:user_id => user_data}.to_json
      elsif is_presence_channel(channel_name)
        raise ArgumentError, "user_data is required for presence channels"
      end

      channel = @channels.add(channel_name, user_data)
      if @connected
        authorize(channel, method(:authorize_callback))
      end
      return channel
    end