Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 单击事件在节点js中不起作用_Node.js_Express_Socket.io - Fatal编程技术网

Node.js 单击事件在节点js中不起作用

Node.js 单击事件在节点js中不起作用,node.js,express,socket.io,Node.js,Express,Socket.io,我正在学习nodejs+express+socket.io。我有一个用户列表,当客户端连接时,列表会自动追加。为了进行试用,我已使用div元素的click event进行了检查 客户端 <div class="userlist"> <ul> ............... ............... </ul> </div> <script> $('.userlist').click(function() {

我正在学习nodejs+express+socket.io。我有一个用户列表,当客户端连接时,列表会自动追加。为了进行试用,我已使用div元素的click event进行了检查

客户端

<div class="userlist">
  <ul>
    ............... ...............
  </ul>
</div>

<script>
  $('.userlist').click(function() {
    socket.emit('private', 'test');
  });

  socket.on('private', function(mesg) {
    $('body').append($('<li class="listm">').text(mesg));
  });
</script>
io.on('connection', function(socket){
    socket.on('private', function(mesg)
    {  
       console.log('private test message');
       io.socket.emit('private',mesg);
    }); 
});
但它不起作用。当我单击div时,它不会在控制台中打印消息,也不会附加任何文本


我做错了什么?

我看不出您显示的代码有任何错误,但我可以想到以下几点:

1.您是否记得将
http
服务器实例链接到socket.io? 然后使用链接服务器

server.listen(port, () => {

});
2.加载页面后,是否在客户端上包含
socket.io
,并连接到服务器? 另一件事,尽管这可能只是问题中的一个输入错误,但在服务器上,您需要使用从连接回调返回的
socket
,而不是
io.socket

io.on('connection', function(socket){
    socket.on('private', function(mesg)
    {  
       console.log('private test message');
       socket.emit('private',mesg); // <----- Use this (without io.)
       // Not this: io.socket.emit('private',mesg); 
    }); 
});
io.on('connection',函数(socket){
socket.on('private',函数(mesg)
{  
log(“私有测试消息”);

socket.emit('private',mesg);//我看不出您显示的代码有任何错误,但我可以想到以下几点:

1.您是否记得将
http
服务器实例与socket.io链接? 然后使用链接服务器

server.listen(port, () => {

});
2.加载页面后,是否在客户端上包含
socket.io
,并连接到服务器? 另一件事,尽管这可能只是问题中的一个输入错误,但在服务器上,您需要使用从连接回调返回的
socket
,而不是
io.socket

io.on('connection', function(socket){
    socket.on('private', function(mesg)
    {  
       console.log('private test message');
       socket.emit('private',mesg); // <----- Use this (without io.)
       // Not this: io.socket.emit('private',mesg); 
    }); 
});
io.on('connection',函数(socket){
socket.on('private',函数(mesg)
{  
log(“私有测试消息”);

socket.emit('private',mesg);//谢谢dude io.socket.emit只是问题:-)这是我愚蠢的错误。感谢我指出+1:-)如何调试nodejs中的错误?在上面的问题中,它不会在控制台中抛出任何错误。如果有调试选项,我很容易就知道错误是什么。很高兴帮助朋友,没有什么比一双新眼睛更能显示我们愚蠢的错误:)就不会抛出错误而言,这是因为在
io.socket
中已经有一个对象具有
emit
方法,所以从技术上讲,您只是调用了一个错误的函数,调试器无法真正帮助我们理解superb解释。谢谢dude io.socket.emit仅问题:-)这是我愚蠢的错误。感谢我指出+1:-)如何调试nodejs中的错误?在上面的问题中,它不会在控制台中抛出任何错误。如果有调试选项,我很容易就找出了错误。很高兴帮助朋友,没有什么比一双新眼睛更能显示我们愚蠢的错误:)只要没有抛出错误,那是因为re已经是
io.socket
上的一个对象,它有一个
emit
方法,所以从技术上讲,你只是调用了一个错误的函数,调试器无法真正帮助我们理解superb解释。
io.on('connection', function(socket){
    socket.on('private', function(mesg)
    {  
       console.log('private test message');
       socket.emit('private',mesg); // <----- Use this (without io.)
       // Not this: io.socket.emit('private',mesg); 
    }); 
});