即时通讯: 小程序使用云开发实现聊天功能(1对1)


之前做的两个项目都涉及到即时通讯功能,近期帮朋友开发小程序时也有这个需求,因为没有后端,所以决定使用云开发来实现通讯功能。

即时通讯的关键点在于即时,在之前的开发中我们可以通过websocket长连接来实现,云开发又怎样来完成这项功能呢?

通过查阅小程序官方文档,我们发现collection.watch()方法可以实现数据监听,官方说明为:

监听集合中符合查询条件的数据的更新事件。使用 watch 时,支持 where, orderBy, limit,不支持 field。

这样一来我们边可以通过wach方法监听指定聊天室的数据更新(将A B用户的聊天关系记录为一条聊天室数据,通过id进行唯一标识)

具体代码如下:

 1 // 监听数据变化
 2 let _db = db.collection('msgList')
 3 _db 
 4   .where({id: this.data.id})
 5   .watch({
 6     // 成功回调
 7     onChange: function(snapshot) {
 8       let reviceMsg = snapshot.docChanges[0]
 9       if(reviceMsg.dataType == 'add'){
10         console.log(reviceMsg.doc)
11         let talkData = that.data.talkData
12         talkData.push(reviceMsg.doc)
13         that.setData({
14           talkData: talkData
15         })
16       }
17     },
18     // 失败回调
19     onError: function(err) {
20       console.error('the watch closed because of error', err)
21     }
22   })

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM