我怎样才能得到一个socket.username? (socket.io)

我想写一个简单的聊天实践经验。

好的,但我不能得到一个socket.nickname通知join/离开房间。 (当我尝试通过它,他总是伤心'未定义')。

现在好了,试着创build房间清单

更新代码:

client.js:

$('#roomForm').submit(function() { socket.emit('createRoom', $('#roomName').val()); $('#roomForm').hide(); $('#chatForm').show(); return false; }); socket.on('message', function(data) { newMessage(data); }); socket.on('showRooms', function(rooms) { console.log(rooms); for(var i = 0; i < rooms.length; i++) { $('#rooms').append($('<li>') .append($('<form id="freeRoom">') .append($('<span id="room">').text(rooms[i] + ' ///')) .append($('<button>').text('connect')))); }; }); $('#freeRoom').submit(function() { socket.emit('connectToRoom', $('#room').text()); return false; }); 

server.js:

 io.on('connection', function(socket) { socket.on('sendNickname', function(username) { socket.username = username; users.push(socket.username); socket.emit('showRooms', rooms); }); socket.on('disconnect', function() { socket.broadcast.to(socket.room).emit('notice', socket.username + ' has left the room'); users.splice(users.indexOf(socket.username), 1); socket.emit('showRooms', rooms); }); socket.on('message', function(data) { socket.broadcast.to(socket.room).emit('message', data); }); socket.on('createRoom', function(room) { socket.leave(socket.room); socket.room = room; rooms.push(socket.room); socket.join(socket.room); socket.emit('showRooms', rooms); console.log('Rooms: ' + rooms); socket.broadcast.to(socket.room).emit('notice', socket.username + ' has joined to room'); }); socket.on('connectToRoom', function(room) { console.log('Will connect to that room: ' + room); socket.join(room); }); }); 

** UPD 2:**试图连接免费创build的房间:

 $('#freeRoom').submit(function() { socket.emit('connectToRoom', $('#room').text()); return false; }); 

PS和…对不起,我的英语>。<

您发出的事件名称,即“连接”Socket.io中是保留的,同时还有'message''disconnect'

http://socket.io/docs/#sending-and-receiving-events

Socket.IO允许您发出和接收自定义事件。 除了连接信息断开 ,你可以发出自定义事件:

改成别的东西,例如:

Server.js:

 io.on('connection', function(socket) { socket.on('send-nickname', function(nickname) { socket.nickname = nickname; users.push(socket.nickname); console.log(users); }); ... 

Client.js

 socket.emit('send-nickname', nickname);