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

简介: 随着直播越来越火,所在公司也打算制作自己的直播,所以去了解了这方面,使用后发现还是有些问题需要记录的。 经过分析,制作直播应该是分为两块来做,即直播与实时评论。这里先去制作实时评论,等直播ok后,也会将相应心得写上来。

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

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

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

 

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

 

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

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

<script src="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无效');
        },
        onError: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");
                },
                onError: 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('加入聊天室成功。');
  },
  onError: function(error) {
    // 加入聊天室失败
  }
});
复制代码

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

9.其他

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

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

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

 

相关文章
|
3月前
|
前端开发 JavaScript API
阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
【1月更文挑战第15天】【1月更文挑战第72篇】阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
54 6
|
13天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
8月前
|
弹性计算 缓存 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
136 0
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
8月前
|
弹性计算
阿里云最新产品手册——云基础产品与基础设施——计算——云服务器ECS——应用场景——适用web应用
阿里云最新产品手册——云基础产品与基础设施——计算——云服务器ECS——应用场景——适用web应用自制脑图
465 2
|
4月前
|
弹性计算 关系型数据库 数据库
在阿里云上搭建高效Web服务的完整指南
构建高效、稳定的Web服务是每个开发者的必修课。本文将详细介绍如何基于阿里云的相关产品,搭建一个具有高可用性和强大性能的Web服务。我们将使用Elastic Compute Service(ECS)、Server Load Balancer(SLB)、Relational Database Service(RDS)、域名服务等阿里云产品,通过图文并茂的方式为你展示整个流程。
68 0
|
6月前
|
弹性计算 运维 安全
轻量应用服务器_web服务器_个人建站_弹性计算-阿里云
轻量应用服务器_web服务器_个人建站_弹性计算-阿里云
201 0
|
6月前
|
弹性计算 关系型数据库 MySQL
阿里云服务器使用教程参考,阿里云服务器搭建Web站点图文教程指导
购买阿里云服务器并搭建Web站点来部署自己的个人或者企业网站是绝大部分用户购买云服务器的目的,很多初次接触云服务器的用户在购买完阿里云服务器之后不知道如何搭建Web站点,下面是两种最常见且简单的在阿里云服务器上搭建搭建Web站点的图文教程指导,仅供各位新手用户们参考。
阿里云服务器使用教程参考,阿里云服务器搭建Web站点图文教程指导
|
6月前
|
应用服务中间件
阿里云的WAF(Web应用防火墙)3.0的虚拟代理
阿里云的WAF(Web应用防火墙)3.0的虚拟代理
105 2
|
7月前
|
存储 Apache 文件存储
Apache On Windows 如何使用阿里云NAS作为WEB站点目录
在Windows操作系统运行Apache WEB服务器的用户如何使用阿里云NAS共享作为WEB 站点目录。
209 0