0
我有一个事件我试图触发,这就是所谓'用户名'。 我在Node.js中使用Socket.IO库。所以,我有2个文件,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中的事件是内部$(文件)。就绪();
什么也没有发生,事件不会触发。
帮助?
您不应在事件名称中使用空格。事件是否被称为“新用户”?如果不是,你永远不会发出“用户名” – Molda
其实它适用于空间,也许这不是最好的做法,但它绝对有效。 –
当触发一个名为'用户名'的发射时,会触发一个事件。我可以在您的服务器端代码中看到您正在发生名为'用户名'的事件,名为'新用户'的事件中。新用户是否在其他地方被调用?如果不是,那将是一个开始的好地方。此外,我在您的服务器上看到您将每个用户名都推送到一个昵称数组中,但昵称数组不在此代码段中,除非您只是没有将此作为此示例的一部分 – Jackthomson