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