首页 > 代码库 > web 直播&即时聊天------阿里云、融云

web 直播&即时聊天------阿里云、融云

随着直播越来越火,所在公司也打算制作自己的直播,所以去了解了这方面,使用后发现还是有些问题需要记录的。

经过分析,制作直播应该是分为两块来做,即直播与实时评论。这里先去制作实时评论,等直播ok后,也会将相应心得写上来。

我们直播采用了阿里云,评论采用了融云

 

其实融云的api还是比较清晰的,只不过web demo只有ng的,个人对ng不是很熟悉,所以只能自己慢慢摸索。

 

1. 注册帐号,根据提示创建应用,获取appkey

2. 引入sdk(请去官网选择最新版本)

<script src="http://www.mamicode.com/http(s)://cdn.ronghub.com/RongIMLib-2.2.5.min.js"></script>

3. 初始化sdk

RongIMClient.init("xxx"); //"xxx"代表你的appkey

4. 设置监听器

 // 设置连接监听状态 ( status 标识当前连接状态) // 连接状态监听器 RongIMClient.setConnectionStatusListener({    onChanged: function (status) {        switch (status) {            //链接成功            case RongIMLib.ConnectionStatus.CONNECTED:                console.log(‘链接成功‘);                break;            //正在链接            case RongIMLib.ConnectionStatus.CONNECTING:                console.log(‘正在链接‘);                break;            //重新链接            case RongIMLib.ConnectionStatus.DISCONNECTED:                console.log(‘断开连接‘);                break;            //其他设备登录            case RongIMLib.ConnectionStatus.KICKED_OFFLINE_BY_OTHER_CLIENT:                console.log(‘其他设备登录‘);                break;              //网络不可用            case RongIMLib.ConnectionStatus.NETWORK_UNAVAILABLE:              console.log(‘网络不可用‘);              break;            }    }}); // 消息监听器 RongIMClient.setOnReceiveMessageListener({    // 接收到的消息    onReceived: function (message) {        // 判断消息类型        switch(message.messageType){            case RongIMClient.MessageType.TextMessage:                   // 发送的消息内容将会被打印                console.log(message.content.content);                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...                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;            default:                // 自定义消息                // do something...        }    }});

顾名思义,状态连接监听器是用来检测当前用户的状态的,消息监听器也就是我们接受消息的。

5. 获取token(在我的应用中自行获取即可)

6. 连接服务器

 

var token = "xxx"; //"xxx"代表你自己的token// 连接融云服务器。      RongIMClient.connect(token, {        onSuccess: function(userId) {          console.log("Login successfully." + userId);        },        onTokenIncorrect: function() {          console.log(‘token无效‘);        },        one rror:function(errorCode){              var info = ‘‘;              switch (errorCode) {                case RongIMLib.ErrorCode.TIMEOUT:                  info = ‘超时‘;                  break;                case RongIMLib.ErrorCode.UNKNOWN_ERROR:                  info = ‘未知错误‘;                  break;                case RongIMLib.ErrorCode.UNACCEPTABLE_PaROTOCOL_VERSION:                  info = ‘不可接受的协议版本‘;                  break;                case RongIMLib.ErrorCode.IDENTIFIER_REJECTED:                  info = ‘appkey不正确‘;                  break;                case RongIMLib.ErrorCode.SERVER_UNAVAILABLE:                  info = ‘服务器不可用‘;                  break;              }              console.log(errorCode);            }      });

7. 发送消息

 // 定义消息类型,文字消息使用 RongIMLib.TextMessage var msg = new RongIMLib.TextMessage({content:"hello",extra:"附加信息"}); //或者使用RongIMLib.TextMessage.obtain 方法.具体使用请参见文档 //var msg = RongIMLib.TextMessage.obtain("hello"); var conversationtype = RongIMLib.ConversationType.CHATROOM; // 聊天室 var targetId = "xxx"; // 目标 Id RongIMClient.getInstance().sendMessage(conversationtype, targetId, msg, {                // 发送消息成功                onSuccess: function (message) {                    //message 为发送的消息对象并且包含服务器返回的消息唯一Id和发送消息时间戳                    console.log("Send successfully");                },                one rror: function (errorCode,message) {                    var info = ‘‘;                    switch (errorCode) {                        case RongIMLib.ErrorCode.TIMEOUT:                            info = ‘超时‘;                            break;                        case RongIMLib.ErrorCode.UNKNOWN_ERROR:                            info = ‘未知错误‘;                            break;                        case RongIMLib.ErrorCode.REJECTED_BY_BLACKLIST:                            info = ‘在黑名单中,无法向对方发送消息‘;                            break;                        case RongIMLib.ErrorCode.NOT_IN_DISCUSSION:                            info = ‘不在讨论组中‘;                            break;                        case RongIMLib.ErrorCode.NOT_IN_GROUP:                            info = ‘不在群组中‘;                            break;                        case RongIMLib.ErrorCode.NOT_IN_CHATROOM:                            info = ‘不在聊天室中‘;                            break;                        default :                            info = x;                            break;                    }                    console.log(‘发送失败:‘ + info);                }            }        );
因为是直播所以选择了聊天室,大家根据自己的需求更改即可

RongIMLib.ConversationType.CHATROOM; ==> 选择聊天室
targetId = "xxx"; ==> 如果是聊天室就填写创建聊天室的id,私聊就是目标用户的id,以此类推

8. 进入聊天室

  var chatRoomId = "xxx"; // 聊天室 Id。
  var count = 1;// 拉取最近聊天最多 50 条

RongIMClient.getInstance().joinChatRoom(chatRoomId, count, {  onSuccess: function() {       // 加入聊天室成功。       console.log(‘加入聊天室成功。‘);  },  one rror: function(error) {    // 加入聊天室失败  }});

当没有聊天室的时候,此方法会创建聊天室

9.其他

基本上的功能就是这样了,像其他的功能(同步回话列表,表情等)大家去官网查看,这里就不讲解了...

如若您发现有任何问题,欢迎交流指正...

http://www.cnblogs.com/bbbiu/p/6871994.html

 

web 直播&即时聊天------阿里云、融云