html5聊天室php实现的几种方案

html5聊天室php实现的几种方案

html5聊天室php实现的几种方案


聊天室类似于微信的群聊,在app中我们可以通过udp或tcp进行直接的通讯,那么在html网页中如何实现即时通讯呢?

有几种方案可供选择,每种方案都有自己的优势与弱势,今天我们以前端html+后端php来讲解一下聊天室实现的几种方案

一、ajax短连接轮询

这个就是最常见的一种情况,发送的信息按照毫秒级时间戳+用户uid+内容保存在服务器的数据库或其他地方,然后网页的js通过ajax定时轮询在调用后端php的接口,获取最新一条消息的时间戳,那么怎么判断是否有最新的消息呢,主要根据时间戳来,每个消息都会有一个毫秒级别的时间戳,ajax在轮询的时候,会比较本地浏览器上最新消息的时间戳,与服务器接口返回的最新时间戳对比,不一样的话就传递时间戳给接口,让接口返回这个时间戳之后的所有消息。

优点:支持所有的浏览器,

缺点:定时轮询,不能保证及时性,浪费http创建的资源,效率低

二、ajax长连接轮询

这种相比较短连接轮训降低了频繁创建http的开销,而且及时性比短连接更高,这种方式会设置一个长的http过期时间,ajax请求的时候会设置timeout,一般比较长,在这期间,后端接口会与浏览器保持一个timeout时间内的http长连接,当有新消息时,接口主动更新返回给浏览器,浏览器就会去获取这个时间戳以后的消息,重新开始一个长连接。

优点:支持所有浏览器、及时性比短连接快多了

缺点:定时轮询,浪费一定的http创建的资源消耗

三、websocket持久连接

websocket是基于tcp面向html推出的套接字通讯协议,他的优势就是持久连接,创建一次就可进行消息的即使发送与接收。

优点:及时性最好

缺点:现代浏览器支持,后端需要搭建websocket的服务器及websocket接口编写方式

{{collectdata}}

网友评论0