在集成融雲的即時通信時,產品腦門一拍說:咋們要實現一個功能,無論是 Web 端仍是移動端登入,必須只能一個端登入成功而且後登入成功的帳號須要踢掉前面登入的帳號。ide
咋的一聽感受還蠻簡單的,融雲不是有一個服務嘛:叫作多設備消息同步,我把該服務關掉不就好了~~ O(∩_∩)O哈哈~ui
可是....... ┭┮﹏┭┮ 是我想的太簡單了,服務關掉以後 Web 端的確能夠進行互踢了,可是移動端和 Web 端仍是能夠在線呀,原來默認的狀況下,融雲僅支持 1 個 Web 端、1 個 桌面端、1 個移動端同時在線code
這個是融雲多端同時在線詳情:https://docs.rongcloud.cn/v4/views/im/noui/guide/group/connection/multiclient/開發
話很少說,開始揭開謎底get
一、首先將多設備消息同步 - 關閉,關閉鏈接:https://developer.rongcloud.cn/advance/index/YTrydqMSdEsmBtX2zX0Amg同步
二、這時若是多端登入狀態監聽會監聽到狀態碼 6 時,執行斷開連接產品
代碼示例
it
im.watch({
conversation: function(event){
var updatedConversationList = event.updatedConversationList; // 更新的會話列表
console.log('更新會話彙總:', updatedConversationList);
console.log('最新會話列表:', im.Conversation.merge({
conversationList,
updatedConversationList
}));
},
message: function(event){
var message = event.message;
console.log('收到新消息:', message);
},
status: function(event){
console.log('鏈接狀態碼:', status);
var status = event.status;
if(status == 6){
im.disconnect().then(function() {
console.log('斷開連接成功');
});
}
}
});io
三、經過發送自定義消息,來執行斷開鏈接方法console
好比您有兩個設備 A,B,用戶開始在 A 設備登入,而後再 B 設備登入成功後給本身或者給別人發一條自定義消息,A 設備在監聽中根據該自定義消息判斷,調用斷開鏈接方法,便可作到只有一個設備登入
//發送自定義消息
var conversation = im.Conversation.get({
targetId: '接收方的 userId',
type: RongIMLib.CONVERSATION_TYPE.PRIVATE
});
conversation.send({
messageType: 's:person', // 填寫開發者定義的 messageType
content: { // 填寫開發者定義的消息內容
name: 'RongCloud',
age: 12
},
isPersited: true,// 是否存儲在服務端,默認爲 true
isCounted: true // 是否計數. 計數消息接收端接收後未讀數加 1,默認爲 true
}).then(function(message){
console.log('發送 s:person 消息成功', message);
});
經過上面的步驟,就能夠實現只能單設備登入了,可是須要注意您使用的 SDK 版本,一開始我用 3.0.5 SDK 來作,可是有一個問題:執行斷開鏈接仍是會進行重連,因此要使用 SDK 3.0.6 版本以上的 SDK 哦