一、準備工作
首先需要注冊融云賬號橡淑,配置生成App Key,并開通小程序服務
官網(wǎng)地址:https://www.rongcloud.cn/
開發(fā)文檔地址:https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/premise/open.html
可根據(jù)官方文檔一步一步來完成注冊
接下來要做的就是獲取測試要用的用戶token置森,這里官方給我們提供了api直接獲取用于測試符糊,進入控制臺,帶你api調(diào)用行贪,手動生成用戶會返回token給你模闲,用于開發(fā)測試用
二、導入sdk后進行初始化啰脚,導入sdk方式可看第一篇
導入并初始化
const RongIMLib = require('@rongcloud/imlib-v4')
// 應用初始化以獲取 RongIMLib 實例對象实夹,請務必保證此過程只被執(zhí)行一次
const im = RongIMLib.init({ appkey: '你自己的app key' });
三晾咪、監(jiān)聽事件方法
用于監(jiān)聽各種事件往湿,如聊天室中的用戶新發(fā)的消息
/**監(jiān)聽事件 */
watchIM(e){
// 添加事件監(jiān)聽
im.watch({
// 監(jiān)聽會話列表變更事件
conversation (event) {
// 假定存在 getExistedConversationList 方法宅静,以獲取當前已存在的會話列表數(shù)據(jù)
const conversationList = getExistedConversationList()
// 發(fā)生變更的會話列表
const updatedConversationList = event.updatedConversationList;
// 通過 im.Conversation.merge 計算最新的會話列表
const latestConversationList = im.Conversation.merge({ conversationList, updatedConversationList })
console.log("發(fā)生變更的會話列表:",event)
},
// 監(jiān)聽消息通知
message (event) {
//
const message = event.message;
console.log("新接收到的消息內(nèi)容:",event)
},
// 監(jiān)聽 IM 連接狀態(tài)變化
status (event) {
console.log('connection status:', event.status);
},
// 監(jiān)聽聊天室 KV 數(shù)據(jù)變更
chatroom (event) {
/**
* 聊天室 KV 存儲數(shù)據(jù)更新
* @example
* [
* {
* "key": "name",
* "value": "我是小融融",
* "timestamp": 1597591258338,
* "chatroomId": "z002",
* "type": 1 // 1: 更新( 含:修改和新增 )雀瓢、2: 刪除
* },
* ]
*/
const updatedEntries = event.updatedEntries
console.log("聊天室 KV 存儲數(shù)據(jù)更新:",event)
},
expansion (event) {
/**
* 更新的消息拓展數(shù)據(jù)
* @example {
* expansion: { key: 'value' }, // 設置或更新的擴展值
* messageUId: 'URIT-URIT-ODMF-DURR' // 設置或更新擴展的消息 uid
* }
*/
const updatedExpansion = event.updatedExpansion;
/**
* 刪除的消息拓展數(shù)據(jù)
* @example {
* deletedKeys: ['key1', 'key2'], // 設置或更新的擴展值
* messageUId: 'URIT-URIT-ODMF-DURR' // 設置或更新擴展的消息 uid
* }
*/
const deletedExpansion = event.deletedExpansion;
console.log("更新的消息拓展數(shù)據(jù):",event)
}
})
},
四圆存、連接融云服務
傳入用戶的token
/**連接im */
connectIM(token){
//建立im連接
im.connect({ token:token}).then(user => {
console.log('鏈接成功, 鏈接用戶 id 為: ', user.id);
}).catch(error => {
console.log('鏈接失敗: ', error.code, error.msg);
});
},
五、加入聊天室
` joinRoom(e){
// 注: im 實例通過 RongIMLib.init 獲取(單個頁面僅需初始化一次)
var chatRoom = im.ChatRoom.get({
id: '001' //自己創(chuàng)建的聊天室id沦辙,如沒有回自動創(chuàng)建
});
chatRoom.joinExist({
count: 20 // 進入后, 自動拉取 20 條聊天室最新消息
}).then(function() {
console.log('加入聊天室成功');
});
},
六、發(fā)送消息
/**發(fā)送消息 */
send(e){
let that=this
// 獲取指定會話的抽象實例详民,對于會話的操作基于此實例完成
const conversation = im.Conversation.get({
// targetId
targetId: '001',
// 會話類型:RongIMLib.CONVERSATION_TYPE.PRIVATE | RongIMLib.CONVERSATION_TYPE.GROUP
type: RongIMLib.CONVERSATION_TYPE.CHATROOM
});
// 向會話內(nèi)發(fā)消息
conversation.send({
// 消息類型陌兑,其中 RongIMLib.MESSAGE_TYPE 為 IMLib 內(nèi)部的內(nèi)置消息類型常量定義
messageType: RongIMLib.MESSAGE_TYPE.TEXT, // 'RC:TxtMsg'
// 消息內(nèi)容
content: {
content: '這是第1條消息' // 文本內(nèi)容
}
}).then(function(message){
console.log('發(fā)送文字消息成功', message);
}).catch(error => {
console.log('發(fā)送文字消息失敗', error.code, error.msg);
});
},
七、斷開連接
到這里基本就可以實現(xiàn)測試簡單的聊天室功能了
quit(e){
im.disconnect().then(() => console.log('斷開鏈接成功'));
},