当我用套接字发出时,为什么不触发事件?

Why won't the event trigger when I emit with socket?

本文关键字:为什么不 事件 套接字      更新时间:2023-09-26

我有一个事件,我试图触发,称为'用户名'。我正在使用插座。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'事件没有触发