Socket 1.0 repeating connect multiple times

I'm using Heroku + RedisToGo + Express 4.0 + socket.io 1.0.6.

I just recently upgraded to 1.0 from 0.9, and it's half working now. I've hacked together a app from tutorials but my lack of understanding socket.io is showing, so I'm taking a step back. The first question I have is that now socket.on('connect') is happening repeatedly, without stop, even when a connection is successful. My client-side console.log just keeps going and going. Here's client-side:

      // Connect the user
      socket.on('connect', function(){

        var currentUserId = '<%= currentUser.id %>';

        // Add user to redis
        socket.emit('login', { userID: currentUserId});

        // Retrieve presence info
        socket.emit('presence');

      });

      // Show Presence
      socket.on('presence', function(data) {

        var userID = data.user;
        var presence = data.presence;

        if (presence) {
            $('#red-dot-' + userID).css("display", "none");
            $('#green-dot-' + userID).css("display", "inline");  

            // Show the hangout button
            $('#hangout-' + userID).show();
            $('#hangout-unavail-' + userID).hide();       
        } 
        else {
            $('#red-dot-' + userID).css("display", "inline");  
            $('#green-dot-' + userID).css("display", "none");  
        }
      });

And server-side:

 io.sockets.on('connection', function (socket) {

    var savedUserID;

    socket.on('login', function(data){

      var userID = data.userID;
      savedUserID = userID;

      // add first user
      redis.sadd("users", userID);
      redis.hmset("users:"+userID, "socketID", socket.id, "userID", userID);
    });



    socket.on('presence', function(){

      // Get the list of online users and show Presence
      redis.smembers("users", function(err,results) {

          var onlineUsers = results;

          for (var i in onlineUsers) {
              var userID = redis.hget("users:"+onlineUsers[i],"userID", function(err,reply) {

                  var userID = reply;

                  // Emit presence
                  io.sockets.emit('presence', {
                      user: userID,
                      presence: "true"
                  });      

              });  
          }
      });
    });

As you can see I'm manually adding users to redis.

I found the answer in this Google Group thread.

The problem occurred because I had socket.emit('presence'); in my socket.on('connect', function(){}); client-side.

This in turn called socket.on('presence', function(){}); server-side, which was the problem.