nodejs socket.io 聊天室,当点击聊天按钮时候,会多次触发emit

当我第一次点击聊天按钮,触发一次事件,点击第二次触发两次事件,以此类推

server code:

    socket.on('chat',function(data){
        io.sockets.emit('chat',data);
    });

client code:

$(document).off('click.chatBtn').on('click.chatBtn','.chatBtn',function(e){
        var $target = $(e.currentTarget);
        var $charInput = $target.siblings('.charInput');
        var val = $charInput.val();
        var userName = $userName.val();
        if(!userName){
            alert('请输入用户名');
            return;
        }
        socket = io.connect();
        socket.emit('chat',userName+" speak:"+val);
        socket.on('chat',function(data){
            var $it = addMsg(data);
            $it.appendTo($message);
        });
    });

触发效果图

阅读 3.5k
1 个回答

将这一段代码,挪出在click函数外试试。

        socket.on('chat',function(data){
            var $it = addMsg(data);
            $it.appendTo($message);
        });

具体可参考:https://stackoverflow.com/que...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题