第六章 用户下线 - nswbmw/N-chat GitHub Wiki

现在,我们来给聊天室添加用户下线提醒。用户下线流程图如下:

对应代码修改如下:
打开 app.js ,在 socket.on('say') 函数下面添加如下代码:

//有人下线
socket.on('disconnect', function() {
  //若 users 对象中保存了该用户名
  if (users[socket.name]) {
    //从 users 对象中删除该用户名
    delete users[socket.name];
    //向其他所有用户广播该用户下线信息
    socket.broadcast.emit('offline', {users: users, user: socket.name});
  }
});

打开 chat.js ,在 socket.on('say') 下面添加如下代码:

socket.on('offline', function (data) {
  //显示系统消息
  var sys = '<div style="color:#f00">系统(' + now() + '):' + '用户 ' + data.user + ' 下线了!</div>';
  $("#contents").append(sys + "<br/>");
  //刷新用户在线列表
  flushUsers(data.users);
  //如果正对某人聊天,该人却下线了
  if (data.user == to) {
    to = "all";
  }
  //显示正在对谁说话
  showSayTo();
});

现在,我们给聊天室添加了用户下线提醒。

⚠️ **GitHub.com Fallback** ⚠️