第四部分,用户下线以及关闭服务器提醒
下线提醒功能:
1.服务端接受到'disconnect'事件,然后查找users对象里面是否还有下线用户名,有就删除,同时向其他连接的客户端广播下线消息
2.其他客户端触发"offline"事件,刷新用户列表
代码如下:
//服务端
//服务端接收到有用户下线
socket.on('disconnect',function () {
//如果users里有下线用户名
if (users[socket.name]) {
delete users[socket.name];
//向其他用户广播该用户下线消息
socket.broadcast.emit('offline',{users: users, user: socket.name});
}
})
//客户端
////其他用户下线
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();
});
关闭服务器提醒就比较简单了,只需要在客户端的disconnect和reconnect事件添加相应的逻辑渲染dom即可
代码如下:
//服务器关闭
socket.on('disconnect', function() {
var sys = '<div style="color:#f00">系统:连接服务器失败!</div>';
$("#contents").append(sys + "<br/>");
$("#list").empty();
});
//重新启动服务器
socket.on('reconnect', function() {
var sys = '<div style="color:#f00">系统:重新连接服务器!</div>';
$("#contents").append(sys + "<br/>");
socket.emit('online', {user: from});
});