Вы делаете это на стороне клиента (в браузере) или на стороне сервера? Вы упоминаете об использовании alert
, но мне не известен метод clients()
на стороне клиента, который делает то, что вы хотите.
На стороне сервера clients()
возвращает массив Socket
s , как определено этим методом :
/**
* Retrieves all clients as Socket instances as an array.
*
* @api public
*/
SocketNamespace.prototype.clients = function (room) {
var room = this.name + (room !== undefined ?
'/' + room : '');
if (!this.manager.rooms[room]) {
return [];
}
return this.manager.rooms[room].map(function (id) {
return this.socket(id);
}, this);
};
Консоль Node.js и браузеры с инструментами разработки предоставляют объект console
, который позволяет выполнять отладку; как правило, вы можете позвонить console.log(something)
, где something
почти что угодно; в случае объекта подробные сведения об объекте будут перечислены так или иначе.
[Изменить]
Поскольку вы уже используете socket.set
для хранения имени пользователя, возможно, вы можете попробовать что-то вроде этого:
// server
socket.on('connection', function(socket) {
...
socket.on('disconnect', function() {
socket.get('username', function (err, name) {
socket.broadcast.emit('disconnected', name);
});
});
...
});
// client
socket.on('connect', function () {
...
socket.on('disconnected', function(name) {
console.log(name + " disconnected.");
});
...
});