即时推送封包方式
在websocket中,为了区分客户端不同的操作(发送群消息,发送私聊消息等),我们定义了一个数据格式:
- op 命令
- args 额外参数
- msg 消息内容
- msgType...,我们区分了 私聊消息,群消息,系统消息 3种消息,设计了3个表
为了使得客户端能够正常显示群消息,我们对群成员做了软删除处理,确保可以获取到群成员头像
用户可通过http接口,获得历史聊天记录
语音,...为0,只有当B客户端接收到消息,并且向服务器发送已接收命令时,才会置为1:
### 消息接收状态
`{"op":4002,"args":{"msgId":42},"msg":"","flagId":111...所以需要使用task做异步推送:
当A客户端发送一条消息,先存入数据库,并调用task进行异步群发推送,同时给A客户端响应ok,代表接收到此消息
通过easyswoole的task组件,进行推送:...当客户端发送一条消息之前,需要生成一个flagId,发送消息时附带flagId
服务端响应消息时,会附带flagId
因此,当客户端发送消息时,新增一个flagId的定时器,当定时器到期却没有接收到服务端响应消息时