NodeJS + Socket.io 实现的一个在线聊天室

NodeJS + Socket.io 实现的一个在线聊天室

Node.js 实时通信

访问GitHub主页

共11Star

详细介绍

ChatRoom

NodeJS + Socket.io 实现的一个在线聊天室, 预览效果如下

image

每打开一个网页,就可以输入姓名进入聊天室,然后就可以尽情的聊天啦!

提示:

  1. 样式设置的比较简单,更谈不上响应式设计,所以建议在电脑上打开预览网址进行使用
  2. 目前也正在找 bug,如果你找到了,希望多多指教

实现

  1. 主要依赖 sockt.io 实现,可以在 Socket.io 官网 查看使用文档,上手非常快。
  2. 至于部署,是使用 Heroku,一个国外的平台,部署 NodeJS 程序十分简单,可以去 Heroku 官方 查看相关使用教程。

Bug 历程

  • 20170508

问题出现: 当多个用户登录时,随着用户的离线会导致一些仍然在线的用户从左侧联系人中消失。

问题原因:为了能从 DOM 中删除元素,在用户连接的时候我在后台为每个用户分配了一个类似 id 的辨别机制,然后再插入 DOM 的时候以此为类名,不过我采取的策略是以用户数组的当前长度作为标志,这时候随着数组的递减,会导致一批用户拥有相同的标志,也就是在 DOM 中拥有相同的类名,所以会有此问题出现。

问题解决:使用 uuid 模块,为每一个用户分配以时间为基准的随机数字串,这时用户标志重复的可能性是非常低的,几乎不可能出现,这样也就解决了这一问题。