Javascript 是否可以使用Nodejs和Socket.io更新页面的单个部分?

Javascript 是否可以使用Nodejs和Socket.io更新页面的单个部分?,javascript,jquery,node.js,socket.io,express,Javascript,Jquery,Node.js,Socket.io,Express,我正在尝试创建一个基本节点应用程序,每次客户端连接时,我都要更新页面上显示的计数器。(我的目标是以最简单、易学的形式创建此应用程序,以便向讲师演示节点) 服务器端应用程序代码段: 建立连接 var clients = 0; io.sockets.on('connection', function (socket) { socket.on('connect', function () { clients += 1 }); socket.on('disconnect', functio

我正在尝试创建一个基本节点应用程序,每次客户端连接时,我都要更新页面上显示的计数器。(我的目标是以最简单、易学的形式创建此应用程序,以便向讲师演示节点)

服务器端应用程序代码段: 建立连接

var clients = 0;

io.sockets.on('connection', function (socket) {
  socket.on('connect', function () { clients += 1 });  
  socket.on('disconnect', function(){ clients -= 1 });  
});
呈现页面

app.get(navigation.chat.page, function(req, res){ 
  res.render('chat', {
    title: navigation.chat.title,
    connected: clients
  });
});
聊天页面模板代码段: 客户端jQuery、Socket.io和JavaScript 问题:
连接的客户端数仅在页面刷新时更新。我想异步更新号码。我对node、socket.io和express都是新手,所以我不确定如何解决这个问题

与其在客户端递增,不如在服务器端保留计数器值,在连接时递增,在断开连接时递减。然后,您可以发送更新的计数器(在更改值的同一事件处理程序中)。在客户端,用计数器侦听事件,当收到时,替换html中的值

服务器:

var用户数=0;
io.sockets.on('connection',函数(socket){
//连接时,更新用户数
++用户数量;
//将它发送到每个打开的插座
io.sockets.emit('users\u count',users\u count');
//当这个插座关闭时
socket.on('disconnect',function(){
//用户断开连接
--用户数量;
//发送到每个打开的套接字,这样每个人都有最新的数据
io.sockets.emit('users\u count',users\u count');
});
});
客户端:

jQuery(函数($){
//连接到本地主机
var socket=io.connect('http://localhost');
//通过更新我们的html来处理用户计数事件
socket.on('users\u count',函数(数据){
$(“#客户计数”)。文本(数据);
});
});

与在客户端递增相比,最好在服务器端保留计数器值,在连接时递增,在断开连接时递减。然后,您可以发送更新的计数器(在更改值的同一事件处理程序中)。在客户端,用计数器侦听事件,当收到时,替换html中的值

服务器:

var用户数=0;
io.sockets.on('connection',函数(socket){
//连接时,更新用户数
++用户数量;
//将它发送到每个打开的插座
io.sockets.emit('users\u count',users\u count');
//当这个插座关闭时
socket.on('disconnect',function(){
//用户断开连接
--用户数量;
//发送到每个打开的套接字,这样每个人都有最新的数据
io.sockets.emit('users\u count',users\u count');
});
});
客户端:

jQuery(函数($){
//连接到本地主机
var socket=io.connect('http://localhost');
//通过更新我们的html来处理用户计数事件
socket.on('users\u count',函数(数据){
$(“#客户计数”)。文本(数据);
});
});

我应该监听什么事件来更新客户端的计数?使用socket.io可以使用自定义事件。嘿,它仍然不是异步的。必须刷新页面才能更新计数。好的,我的错误-问题不在于异步,问题在于计数只发送了一次-在新连接时。这就是为什么计数器只在页面刷新时更新,或者实际上在新连接时更新。我已经修复了这个问题,现在连接和断开事件会向所有打开的套接字发出计数。我应该侦听什么事件来更新客户端的计数?使用socket.io可以使用自定义事件。嘿,它仍然不是异步的。必须刷新页面才能更新计数。好的,我的错误-问题不在于异步,问题在于计数只发送了一次-在新连接时。这就是为什么计数器只在页面刷新时更新,或者实际上在新连接时更新。我已经修复了这个问题,现在连接和断开事件时,计数被发送到所有打开的套接字。
  span#client_count #{connected}
  |  connected clients   
var socket = io.connect('http://localhost');

$(document).ready(function(){
  socket.on('connect', socket.emit('connect'));
});