实现一个p2p的实时聊天,代码有注释,欢迎大家交流学习
首先看一下实现效果图
好了,接下来我们就来试着实现一下用户一对一的实时聊天功能
1、创建聊天
首先看一下聊天列表的数据表设计
在用户点击发起聊天的时候会创建一个这样的数据表,content为聊天的内容,一开始为空,openid存放我们自己的openid,userid存放聊天对象的openid。其目的是为了给这个聊天建立一个唯一标识,当点击私聊在创建这个聊天的时候首先会判断数据表中是否已经拥有这个openid以及userid,如果已经拥有那么就不再创建。
//云函数代码
app.router("message",async(ctx,next)=>{
let messageList = await db.collection("message").where({
_openid:_.eq(event.openId).or(_.eq(event.userId))
})
.get()
.then(res=>{
return res
})
ctx.body = messageList
})
//js代码,创建聊天
//openId为当前用户openid,userId为聊天对象的openId
buildMessage(){
wx.cloud.callFunction({ //这里调用云函数,先拿到数据表中_openid = 当前小程序用户openid的数据
name:"messageList",
data:{
$url:"message",
openId,
userId
}
}).then(res=>{
this.setData({
allMessage:res.result.data
})
let arr = this.data.allMessage
if(arr.length === 0){ //进行判断,如果没有数据则创建一个聊天
wx.cloud.database().collection("