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:
- your given
username
not matchdata.username
connected yet, and/or - you're trying call
emit
on number, not socket (usernames[data.username] = socket.id;
), and/or - the
usernames
object not in scope when you're trying use inrequestmoney
event handler.
i'd place wager on #2.
Comments
Post a Comment