源码我放在了github上面。【地址在这儿】。首先可以看下【上篇】博客,把环境先搭建好和熟悉socket.io基本用法。整个可以实现下面的这些功能:
- 用户登陆进行聊天。
- 用户登陆后,即可发送消息。
- 对刚登录用户来说,罗列所有在线用户列表
- 对已在线的用户来说,通知该用户有新用户登陆或者离开
- 支持对所有人广播聊天内容,即群聊
- 支持私聊当前在线用户,即私聊
- 用户即时获得消息列表
- 当服务器断开连接时,提醒所有用户
整个代码量非常少,可以根据自己的需求修改逻辑。
没有进行太多的限制,比如没有限制重名登陆,主要是关注逻辑代码。
没有写任何样式,所以很难看额,以后有时间慢慢的补起来吧,现在考试略多。。。。
运行:切换到此目录,运行node index.js
即可。打开端口3000,localhost:3000
。
服务器端代码
1 | var http = require('http'); |
客户端代码
DOM结构部分
1 | <header> |
js脚本代码部分
1 | <script src="/socket.io/socket.io.js"></script> |
这里注意下有个地方,有的时候我们调用方法的时候,不能够直接用this.method调用该方法,因为比如我们使用:this.socket.on的时候,这个内部的this已经不是当前对象了。所以我们要直接使用CHAT.method或者CHAT.属性的方法来调用。
截图结果
总结
socket.io很好用,开发也很简单,花了比较少的时间。但是还有一些功能没有实现,比如如何实现群组,也就是房间聊天?如何给不在线的用户发送聊天记录?如何利用redis
和聊天室结合起来?