文享日志

简易聊天室实现

Nodejs Ajax

发表于2017年11月16日19:02:13

0条评论 256次阅读

  看了一篇文章《为什么要使用Nodejs》,提到Node用来做聊天室,其中是用webSocket协议来实现。本文实现的是利用ajax技术实现的聊天室。 

       我们都知道http是无状态协议,而会话需要持续的连接,HTML5出了WebSocket协议,这种协议可以实现持续性的连接。但是,一方面有些浏览器还不支持这种协议,另一方面,我想练习一下ajax技术。所以利用ajax,模拟持久性连接,实现用户'实时'会话。

       ajax发送数据,是基于http协议的,怎么才能实现持久性连接,判断服务器上有没有新消息呢?我使用的是setInterval函数,每400毫秒发起一次请求,查看有没有新消息。有新消息,则页面中内容拼接一下,没有则继续发起下次请求,原理十分简单,实现过程却有点曲折。

        怎么判断一个消息属于新消息,并且已经发送到客户端上了是一个问题。我的实现是在ajax获取到的html代码添加到页面中后,获取这段代码里面最后一条消息的时间,再把时间拼接到url里,再发送ajax请求。服务端获取到url里的时间,依次和数据库中获取到的所有消息的时间比较,比url里时间大的,放到数组中,用于模板拼接html代码。最后返回。。当初这一块折磨了我好久,都有想砸电脑的冲动,明明逻辑都对,就是不出结果。后来发现同样的Date对象,在前后两端的形式不一样。最后又进行格式化时间,拼接成字符串类型。


这是我实现的聊天室,并不十分完美,但达到了我的目的。

简易聊天室:

http://docmobile.cn/chat

注意:点击完‘接受消息’之后,才能收到别人发送的消息。


《为什么使用Nodejs》的链接地址:

https://funteas.com/topic/5a01c9dd71fc796e69dd916e


       

👍 1  👎 0
共有0条评论

发表新评论

提交

广告展示

腾讯云推广 阿里云推广