Node.js 单击事件在节点js中不起作用
我正在学习nodejs+express+socket.io。我有一个用户列表,当客户端连接时,列表会自动追加。为了进行试用,我已使用div元素的click event进行了检查 客户端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() {
<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);
});
});