我有一个事件,我试图触发,称为'用户名'。我正在使用插座。IO库在Node.js。我有两个文件,index。html和server。js:
我试图发出的事件是在客户端index.html:
//show online users
socket.on('usernames', function (data) {
console.log('@@@@@@@@@@@@@@@@@@@@@');
var html = '';
for (var i = 0; i < data.length() ; i++) {
html += data[i] + '<br/>';
}
$users.html(html);
});
emit在server.js中的服务器端:
io.sockets.on('connection', function (socket) {
//new user join
socket.on('new user', function (data, callback) {
if (nicknames.indexOf(data) != -1) { //if name dont exist .indexOf() returns -1
callback(false);
} else {
callback(true);
socket.nickname = data;
nicknames.push(socket.nickname);
io.sockets.emit('usernames', nicknames);
}
});
// sent message from user
socket.on('send message', function (data) {
//send the data to all users
io.sockets.emit('new message', data);
});
//
});
** index.html中的事件在$(document).ready()中;
什么也没发生,事件不会触发。
帮助吗?
回答我自己的问题。有两个错误:1)语句'data.length()'没有编译,正确的方法是使用'data.length'。2)我没有触发'new user'事件,因此'usernames'事件没有触发