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

时间:2016-11-04 18:06:34

标签: javascript jquery node.js socket.io event-handling

我正在尝试触发一个名为' usernames '的事件。 我在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);
    });

在server.js中,emit位于服务器端:

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 个答案:

答案 0 :(得分:0)

回答我自己的问题。 有2个错误: 1)陈述&#39; data.length()&#39;没有编译,正确的方法是使用&#39; data.length&#39;。 2)我没有解雇新用户&#39;事件因此用户名&#39;事件没有触发。