NodeJS + Socket.io 实现的一个在线聊天室,在线预览地址
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
public
.gitattributes
.gitignore
Procfile
README.md
app.js
demo.png
index.html
package.json

README.md

ChatRoom

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

image

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

提示:

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

实现

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

Bug 历程

  • 20170508

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

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

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