首先我的采用了,gatewayWork搭建长连接,使用tp5进行api及前端页面的实现,数据库就顺便用个mysql了
实现效果如下
零.即时通信的原理
即时通讯跟我们平时进行的前后端的交互有什么不同呢
很简单,三次握手与长连接的区别
三次握手太常见了就不细谈了,我们主要讲讲长连接,
长连接,就是服务器与客户端的连接一直不断,
使用三次握手时,就是广大的客户端知道服务器的ip地址,然后想服务器发送请求就完事了,
那么问题来了,三次握手客户端向服务器推消息是没问题了,但是服务给客户端发消息怎么办呢,
所有的客户端都知道自己想访问服务器的地址,但是服务器不知道那些是他向想推送消息的客户端的ip,
这时候怎么办呢,hh长连接就该出场了,
使用长连接后我们服务端就可以知道有那些客户端跟它通信了,就可以相互推送消息了
但是长连接及其消耗cpu资源,谨慎使用
一.gatewayWork介绍
这个就是我采用的php建立长连接的库,使用这个库以后,会在你的服务器中自己建立一个webSocket用来进行长连接,官网传送门https://www.workerman.net
二.项目分析
写代码之前先分析需求我们这个最终的实现的项目,需要的需求如下
1.能实时进行点对点的聊天(可以同时与多人进行)
2.能发送图片
3.能发送表情
4.能显示自己的与聊天对象的头像
5.每次进入聊天界面能获取最近的10条记录
6.在信息列表页面能显示未读消息的条数
7.在信息列表页面能显示未读消息的发送者的头像
8.在信息列表页面能显示未读消息的发送者发送的最后一条消息
9.在信息列表页面能显示未读消息的发送时间
这些功能将在下面的系列,一一讲解