I'm implementing a node.js server that manages bi-connections between users with socket.io (version:0.8.7). I use an array that stores the users that have no chat partners yet. When a user requests a new partner, the app picks a user in this array and then checks to see if the user is still connected. And here's my problem:
I can't manage to get the socket client for the user, even if the user is still connected. Here's a snippet of my code:
// An array of users that do not have a chat partner var soloUsers = []; var io = sio.listen(app); io.sockets.on('connection', function (socket) { socket.on('sessionStart', function (message) { // Parse the incoming event switch (message.event) { // User requested initialization data case 'initial': ... // User requested next partner case 'next': // Create a "user" data object for me var me = { sessionId: message.data.sessionId, clientId: socket.sessionid }; var partner; var partnerClient; // Look for a user to partner with in the list of solo users for (var i = 0; i < soloUsers.length; i++) { var tmpUser = soloUsers[i]; // Make sure our last partner is not our new partner if (socket.partner != tmpUser) { // Get the socket client for this user partnerClient = io.sockets.clientsIndex[tmpUser.clientId]; // Remove the partner we found from the list of solo users soloUsers.splice(i, 1); // If the user we found exists... if (partnerClient) { // Set as our partner and quit the loop today partner = tmpUser; break; } } } ... I get the following error:
partnerClient = io.sockets.clientsIndex[clientId]; ^ TypeError: Cannot read property 'undefined' of undefined I did an output (console.log) of the clientId, and it is definitely indefined. Furthermore, I think the API might have changed in socket.io version 0.8, and you can't use the "clientsIndex" method anymore. Does anyone know the replacement?
Thanks!!!