第四部分,用戶下線以及關(guān)閉服務(wù)器提醒
下線提醒功能:
1.服務(wù)端接受到'disconnect'事件,然后查找users對(duì)象里面是否還有下線用戶名,有就刪除,同時(shí)向其他連接的客戶端廣播下線消息
2.其他客戶端觸發(fā)"offline"事件,刷新用戶列表
代碼如下:
//服務(wù)端
//服務(wù)端接收到有用戶下線
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) {
//顯示系統(tǒng)消息
var sys = '<div style="color:#f00">系統(tǒng)(' + now() + '):' + '用戶 ' + data.user + ' 下線了!</div>';
$("#contents").append(sys + "<br/>");
//刷新用戶在線列表
flushUsers(data.users);
//如果正對(duì)某人聊天,該人卻下線了
if (data.user == to) {
to = "all";
}
//顯示正在對(duì)誰說話
showSayTo();
});
關(guān)閉服務(wù)器提醒就比較簡(jiǎn)單了,只需要在客戶端的disconnect和reconnect事件添加相應(yīng)的邏輯渲染dom即可
代碼如下:
//服務(wù)器關(guān)閉
socket.on('disconnect', function() {
var sys = '<div style="color:#f00">系統(tǒng):連接服務(wù)器失??!</div>';
$("#contents").append(sys + "<br/>");
$("#list").empty();
});
//重新啟動(dòng)服務(wù)器
socket.on('reconnect', function() {
var sys = '<div style="color:#f00">系統(tǒng):重新連接服務(wù)器!</div>';
$("#contents").append(sys + "<br/>");
socket.emit('online', {user: from});
});