技术:HTML+CSS+JavaScript+Node.js + WebSocket(socket.io)
本项目主要使用Node.js和WebSocket做一个聊天室。实现多对多的聊天,聊天室可以对当前在线人数进行统计并进行排列,以及聊天历史记录的显示,拥有人性化的用户进入以及退出提示,网络断开连接也会有相应的提示。
" >
$("#onlineUsers").html(html.join('')))
#### 2.1.4 服务端用户登入退出以及网络断开连接代码
有新用户进入聊天室,在登录页面输入一个用户名,后台会随机给分配一个socket id。然后动态添加或者移除DOM节点,就可以在页面显示某某用户加入聊天室,某某用户离开聊天室。
当然了,还要考虑到一些异常情况,并在其中进行适当处理。比如出现某种未知的错误,会提示“系统繁忙”。这样,显得系统更为人性化。代码如下所示。
updateOnlineUser();
appendMessage(formatUserTalkString(user) + "[进入房间]")
var EVENT_TYPE_LOGOUT; // 用户退出 var user = mData.values[0];
onlineUserMap.remove(user.uid);
updateOnlineUser();
appendMessage(formatUserTalkString(user) + "[离开房间]"
case EVENT_TYPE.SPEAK: // 用户发言 var content = mData.values[0];
appendMessage(formatUserTalkString(mData.user)); appendMessage("
" +
content);
break;
case EVENT_TYPE.ERROR: // 出错了
appendMessage("[系或繁忙]");
break;
default:
break;
# 总结
这个聊天室的主要难点在用没有过多接触过的Node.js对前端数据的处理以及前后端数据的通信。一方面自己接触的后台语言本来也不多,再加上平时主要是写静态的前端页面,前后端结合来写,经历不是非常多。所以,刚开始并不知道如何进行前后端的数据通信,最后通过自己学习摸索,从最开始的安装Node环境,到最后学会利用Node.js的request模块来启动HTTP服务,并监听固定端口,实现前后端的简单链接。最后在简单的基础上加了一些人性化的功能,比如对应操作会有提示,对用户名有非法判断,显示系统时间等。总得来说,收获蛮大,自己对项目构建以及代码实现都说的非常清楚,希望能帮助到大家。