javascript - Nodejs Cannot read property 'emit' of undefined error -


i'm trying send message specific user on nodejs, save socket.id , nickname username array, send message, error:

cannot read property 'emit' of undefined 

this code:

var socket      = require('socket.io'),     express     = require('express'),     app         = express(),     server      = require('http').createserver(app),     io          = socket.listen(server);      io.sockets.on('connection', function (socket) {          socket.on('login', function (data) {             login(data.username, data.password, function (success, value) {                 if (success) {                     usernames[data.username] = socket.id;                     socket.emit('login', {result: true, id: value});                 } else {                     socket.emit('login', {result: false});                 }             });         });          socket.on('requestmoney', function (username) {             log.info('username: ' + username);             usernames[username].emit('message', {username: 'hey !!'});         });     }); 

usernames[username] undefined given username, because of 1 or more of following things:

  1. your given username not match data.username connected yet, and/or
  2. you're trying call emit on number, not socket (usernames[data.username] = socket.id;), and/or
  3. the usernames object not in scope when you're trying use in requestmoney event handler.

i'd place wager on #2.


Comments