web 直播&即時聊天------阿里雲、融雲(二)


上一篇簡要主要介紹了融雲制作聊天室的基本方法,這次基本屬於對上一篇的補充以及進階...^_^...

(ps:吐槽一下,加了三個融雲的線下qq群,全部沒人解決問題,也不知道建此群的意義,若是民間的話就當我沒說,若是融雲的工作人員的話,那這做的確實有些糙。反正我是那種給我文檔我可能還要懵B的人,而且web這一塊的文檔真心不算很友好!!!)

根據需求,聊天室已經創建出來了,可是需求不會一成不變,上面又下達了需要根據直播人的行為來改變觀看人狀態的事(簡單點說就是,直播的點一個按鈕,看直播的這邊即時增加一個按鈕出來)

了解需求后,首先想到的是創建長連接來達成,可后來發現利用融雲的消息監聽功能可以不錯的完成這個功能。

1.小灰條

 

 

官方給出的是這樣的,然后我就

 

var msg = new InformationNotificationMessage('小灰條');
RongIMClient.getInstance().sendMessage(conversationType,targetId, msg, {
    onSuccess: function (message) {
        // do something...
    },
    onError: function (errorCode) {
     // do something... } })

so:

然后又去api里查也沒有給出個方法,不過最后還是找到類似的方法,替換下方法名即可。

var msg = new RongIMLib.InformationNotificationMessage({"message": "命令"});
var conversationtype = RongIMLib.ConversationType.CHATROOM;//聊天室
var targetId = "xxx"; // xxx聊天室Id
RongIMClient.getInstance().sendMessage(conversationType,targetId, msg, {
    onSuccess: function (message) {
        // do something...
    },
    onError: function (errorCode) {
     // do something...
    }
})

之后在消息監聽器中找到對應方法進行事件處理

// 消息監聽器
RongIMClient.setOnReceiveMessageListener({
    // 接收到的消息
    onReceived: function (message) {
        // 判斷消息類型
        switch(message.messageType){
            case RongIMClient.MessageType.TextMessage:
                // 發送的消息內容將會被打印
                //console.log(message.content.content);
                   console.log('收到發送的消息')
                break;
            case RongIMClient.MessageType.VoiceMessage:
                // 對聲音進行預加載                
                // message.content.content 格式為 AMR 格式的 base64 碼
                RongIMLib.RongIMVoice.preLoaded(message.content.content);
                break;
            case RongIMClient.MessageType.ImageMessage:
                // do something...
                break;
            case RongIMClient.MessageType.DiscussionNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.LocationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.RichContentMessage:
                // do something...
                break;
            case RongIMClient.MessageType.DiscussionNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.InformationNotificationMessage:
                // do something...
                console.log('收到小灰條信息')
                break;
            case RongIMClient.MessageType.ContactNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.ProfileNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.CommandNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.CommandMessage:
                // do something...
                break;
            case RongIMClient.MessageType.UnknownMessage:
                // do something...
                break;
            case RongIMClient.RegisterMessage.PersonMessage:
                // do something...
                break;
            default:
                // 自定義消息
                // do something...
                
        }
    }
});

2.自定義消息

自定義消息官方還是給了足夠多的解釋的,這里就簡單梳理一下

首先,創建消息

//創建消息
var messageName = "PersonMessage"; // 消息名稱。
var objectName = "s:person"; // 消息內置名稱,請按照此格式命名。
var mesasgeTag = new RongIMLib.MessageTag(true,true);// 消息是否保存是否計數,true true 保存且計數,false false 不保存不計數。
var propertys = ["name","age"]; // 消息類中的屬性名。
RongIMClient.registerMessageType(messageName,objectName,mesasgeTag,propertys);
var conversationType = RongIMLib.ConversationType.CHATROOM; //聊天室,其他會話選擇相應的消息類型即可。
var targetId = "xxx"; // 想獲取自己和誰的歷史消息,targetId 賦值為對方的 Id。

之后,在事件中觸發

//發送消息
    var msg = new RongIMClient.RegisterMessage.PersonMessage({name:"zhang",age:12});
    RongIMClient.getInstance().sendMessage(conversationType,targetId, msg, {
        onSuccess: function (message) {
        },
        onError: function (errorCode) {
        }
    })

這里需要注意的是,不僅需要在直播方創建消息,在觀看方同樣需要創建,而上面說到的小灰條則只在直播方或者管理者創建就可以...

發送完信息后,接受信息的地方同時需要更改

// 消息監聽器
 RongIMClient.setOnReceiveMessageListener({
    // 接收到的消息
    onReceived: function (message) {
        // 判斷消息類型
        switch(message.messageType){
            case RongIMClient.MessageType.TextMessage:
                   // 發送的消息內容將會被打印
                //console.log(message.content.content);
                 $('.list').prepend('<li>'+message.content.content+'</li>');
                 console.log('收到信息')
                break;
            case RongIMClient.MessageType.VoiceMessage:
                // 對聲音進行預加載                
                // message.content.content 格式為 AMR 格式的 base64 碼
                RongIMLib.RongIMVoice.preLoaded(message.content.content);
                break;
            case RongIMClient.MessageType.ImageMessage:
                // do something...
                break;
            case RongIMClient.MessageType.DiscussionNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.LocationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.RichContentMessage:
                // do something...
                break;
            case RongIMClient.MessageType.DiscussionNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.InformationNotificationMessage:
                // do something...
                
                console.log('收到小灰條')
                break;
            case RongIMClient.MessageType.ContactNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.ProfileNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.CommandNotificationMessage:
                // do something...
                break;
            case RongIMClient.MessageType.CommandMessage:
                // do something...
                break;
            case RongIMClient.MessageType.UnknownMessage:
                // do something...
                break;
            case RongIMClient.MessageType.PersonMessage:
                // do something...
                //這里看清上面是PersonMessage,即創建消息時候所創建的消息名稱
                console.log('自定義消息')
                break;
            default:
                // 自定義消息
                // do something...
        }
    }
});

基本上就是這些了,如果在閱讀過程中遇到任何問題,歡迎指正...

 本文地址:http://www.cnblogs.com/bbbiu/p/6895016.html

上一篇: web 直播&即時聊天------阿里雲、融雲

 

小人持器,叫囂不停;君子藏器,待機而動;國有利器,不示於人

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM