您当前的位置:主页 > www.879kj.com > 正文

RongCloud

2019-10-25 18:55  作者:admin 点击:次 

  为方便开发者了解和接入融云直播聊天室,本文将介绍融云直播聊天室功能特点、主要构成及常见功能的解决方案。

  通过以上各点可以极大的节约视频直播产品的开发和运营成本。目前融云承担的日消息分发量峰值已经超过 2000 亿。

  融云的视频直播聊天室方案,由两部分构成:融云聊天室 SDK 和视频直播 SDK。

  聊天室 SDK 由融云提供。视频直播 SDK 由开发者使用自己的推流和拉流技术来实现,或者使用第三方成熟的 SDK 来实现。融云的开源视频直播聊天室方案中打包了金山云视频 SDK,同时我们也支持七牛、乐视、阿里、UCloud 等视频云 SDK。

  主播端使用的是推流 SDK,主播需要把摄像头采集的视频源做编码,然后推到视频直播云上。

  观众端使用的是拉流 SDK,观众需要的是把视频从服务端拉倒本地做解码,并展示到手机终端上。观众端还必须包括一个视频播放器。

  您也可以把以上的主播端和观众端打包到同一个 App 里,同时提供主播推流功能,又提供观众端拉流观看的功能。融云直播聊天室对于以上几种模式的支持都是完全相同的。

  IMLib 是融云的 SDK 的一个产品组件,提供的是基础的通信能力,当使用融云聊天室的时候,您只需要简单调用初始化、连接、加入聊天室、发送消息等功能。

  基于融云的 IMlib SDK,融云把常见的视频直播聊天室的常用功能封装成了一个 App,SealLive。在这个 App 内,融云实现了登录、连接、直播界面的显示、输入框、发送接收消息的处理流程,我们建议您直接使用这部分代码,可以大大的减轻整个聊天室的开发工作。

  集成融云 SDK 之前,请先了解 App 与 SDK 的逻辑关系,如下:

  2、 App Server 只管理聊天室 Id 列表,客户端调用joinChatRoom加入聊天室,如果聊天室不存在则自动创建。

  融云不维护用户体系和好友关系,App 需要为您用户体系中的每个用户和融云的 userId 建立一一对应的映射关系。之后就可以根据 userId ,加入、退出聊天室并收发消息。

  其中,App 以上部分的功能和 UI 都已经实现并开源,可以开箱即用也可以随意定制。

  从融云 SDK 的角度,都是需要确定一个 UserId 来与融云服务器连接,以保证其后所有的操作都有指向性。

  但作为 App 应用层来讲,可以不暴露融云的 UserId,所谓匿名就是以一个随机的或者说不跟你们应用帐号绑定的 UserId 来登录。

  进入聊天室后如果出现断开连接,当与融云服务器的连接恢复后,SDK 会尝试重连聊天室。重连过程不需要用户参与,用户可以设置聊天室状态监听,来获取聊天室重连的状态信息。

  对于同一个聊天室,只存储该聊天室的 50 条最新消息,也就是说移动端用户进入聊天室时,最多能够拉取到最新的 50 条消息。

  可通过融云加入聊天室方法,设置获取历史消息条数,加入后可获取到对应条数的历史消息。

  如用户加入聊天室时,需要发送“XX加入聊天室”的通知消息,融云推荐使用聊天室消息库中“欢迎用户进入聊天室”消息类型来实现,可以在消息体中附加其他需要的信息属性。

  融云提供的聊天室消息库中,提供了一系列通知消息类型,如:主播开播通知、结束通知、设为管理员通知、移除管理员通知等,方便开发者直播使用。

  在直播聊天场景下,如需要向应用下所有聊天室发送消息时,可使用聊天室广播消息功能,发送后所有在聊天室中的用户都将收到此条消息,如:聊天室管理通知、优惠活动系统通知等。

  融云提供的聊天室消息库中,定义了赞的消息类型,鉴于有些用户会连续点击,建议做消息合并机制处理。比如设置定时器,每 5 秒触发一次,将 5 秒内所有的点赞数一次性发出去,降低服务器压力,保证重要消息的畅达。另外点赞的动画效果可以参考我们的直播聊天室 Demo 源码:

  融云提供的聊天室消息库中,定义了礼物的消息类型,展示就是界面上的一个 View,完全可以根据你们的需求来自定义。因为聊天室类型的应用 UI 都是特殊定制的,作为融云 SDK 来讲,只是负责消息通知,并不负责 UI 绘制。

  融云不维护用户的信息,所以用户的昵称和头像信息都需要您自己来维护管理。详细请查看用户信息显示集成指南。

  用户列表显示逻辑是根据您的需求来确定。举一个例子:聊天室人数从几百到十几万不等,比如需求定为只显示 10 个用户的头像,那就可以根据用户等级或者加入时间的顺序,选取 10 个在线用户的信息来显示。可以由应用自己的服务器来维护这个用户列表,不定时通知给全体成员,也可以每个用户加入/退出聊天室时发送状态消息,由端上接收并维护这个列表。显示的方法也是移动端进行 UI 绘制。

  融云不维护用户的信息,所以关于用户信息和等级的显示,都需要您自己进行开发。通常有两种处理方式:

  可通过调用融云 Server API聊天室封禁服务接口,实现将用户踢出聊天室。

  可通过融云 Server API 接口,设置聊天室禁言用户,被禁言用户不能在聊天室中发送消息,详细请查看聊天室成员禁言服务。

  聊天室中用户在离线 秒后或离线 条消息时会被自动退出聊天室。如应用场景中有驻留用户,不允许被自动退出聊天室,则需要将用户加入到聊天室白名单中。

  可通过融云 Server API 接口,设置聊天室白名单,详细请查看聊天室用户白名单服务。

  聊天室中 1 小时无人说话时,同时没有人加入聊天室时,会把聊天室内所有成员踢出聊天室并销毁聊天室。

  可通过融云 Server API 接口,设置需要保活的聊天室,设置后聊天室不会被自动销毁,详细请查看聊天室保活服务。

  默认同一用户不能同时加入多个聊天室,可通过提交工单方式开启用户同时加入多个聊天室功能。同时,在开启多设备消息同步情况下,多端用户可同时加入到多个聊天室。

  调用 Server API 中的查询聊天室内用户方法,可通过返回值total获取聊天室中在线人数。

  当聊天室内人数众多,消息量会变得非常大,这时可能会出现服务端超过预设承载能力或者分发的消息量超过客户端消息接收能力的情况,这时,就需要引入消息分级机制。

  融云并没有对任何消息进行抛弃,但是在消息量极大的情况下,比如 1 万人到百万左右的聊天室内,消息并发量极大的情况下,每个用户端能收发到的消息和体验已经很有限,因此消息抛弃指的是确保用户端总是能收到最重要的消息,因此不重要的消息看起来就像是被抛弃了。

  在开发过程中,除官方的普通文本消息之外,开发者需要针对不同的消息类别定义不同的消息类型,以便通过消息的 ObjectName 设置消息分级。目前融云支持两级消息分类,分别是高优先级消息和低优先级消息。当发生消息抛弃行为时,优先抛弃低优先级消息。

  聊天室场景下,融云服务端默认单个聊天室中上行消息处理能力是每 200 毫秒 40 条,其中 20 条为高优先级消息使用配额,另外 20 条为高优先级和低优先级消息共同使用。

  在聊天室消息量较大的情况下,融云服务器会按消息发送的时间顺序,将超出消费上限的最新消息丢弃,确保服务器稳定。

  聊天室用户白名单功能,白名单中用户发送的消息受到保护,在聊天室消息量较大的情况下也不被丢弃。

  聊天室消息白名单功能,该名单中的消息受到保护,在聊天室消息量较大的情况下也不被丢弃。

  聊天室消息优先级功能,该功能为设置低优先级的消息类型,在聊天室消息量较大的情况下,此类型的消息将被优先抛弃,确保重要消息不被丢弃。

  以上功能设置后,服务端收到聊天室上行消息时,根据消息类型的设置状态,处理逻辑如下:

  上行消息为低优先级消息,则占用高优先级和低优先级共有的 20 条消息配额,如配额已经用完,之后收到的低优先级消息将被抛弃,不占用高优先级的配额。

  上行消息为默认高优先级消息,则先占用高优先级的 20 条消息配额,如配额已经用完,高优先级和低优先级共用的 20 条配额未占用完时,则占用高低优先级消息的共同配额,直到全部占用,之后收到的高、低优先级消息都将被抛弃。

  上行消息为设置的聊天室消息白名单中的消息或用户白名单中的用户发送的消息时,该类消息不会丢弃,但会占用每 200 毫秒 40 条的消息配额,优先占用高、低优先级消息共用的 20 条配额,其次占用高优先级消息的 20 条配额。配额被全部占用后,再收到高、低优先级的消息时都将被丢弃,但如收到白名单中的消息时则不会被丢弃,按时间顺序正常下发。

  注:单个聊天室可消费的每 200 毫秒 40 条的上行消息配额,开通专有云后可进行配置。

  您可以通过开通服务端实时消息路由来实现此功能,用户在发送点赞消息时,这条消息同步给您的应用服务器。您的应用服务器通过消息类型来分析统计这些数据。

  如果直播聊天室中需要实现消息回看功能,则需要开通聊天室消息云端存储功能。开通成功后,可通过接口获取聊天室中历史消息,消息回看 UI 界面的展示需要由您自己实现。

  聊天室中存储的消息类型及自定义消息如何设置存储,请查看聊天室消息云端存储功能介绍。

  添加聊天室用户白名单,白名单中用户发送消息的优先级别最高,在服务器负载较高的情况下也不被丢弃。查看聊天室用户白名单功能介绍。

  设置聊天室消息优先级,把不重要的消息设置为低优先级消息;这样高并发时保证高优先级消息先通过。查看聊天室消息优先级服务功能介绍。

  在开通了多端同时登录情况下,用户登录多个终端,加入聊天室后,如在一端退出聊天室,其他端不会同步退出,仍然可以收到聊天室中的消息,如果需要一端退出聊天室后,其他已登录的终端也一起退出聊天室,则需要在退出时发送一条命令消息通知其他端退出聊天室,此步骤需要开发者自行实现。

  另外,需要注意如果用户登录终端 A 后,加入了聊天室并在聊天室的会话界面中,这时用户又登录了终端 B ,但未进入聊天室会话界面,这时 A 、B 两个终端都会收接聊天室的消息,只是 B 端的聊天室消息不进行展示。如用户在 A 端退出聊天室,这时融云认为用户在 B 端仍然在聊天室中,会继续向 B 端发送聊天室消息。如果需要 B 端同时也退出聊天室,则需要 A 端在退出时发送一条命令消息通知其他端退出聊天室,此步骤需要开发者自行实现。管家婆全年图纸


白小姐网报| 中道人玄机图资料| 神算子福彩3d心水论坛| 最快手机开奖现场直播| 彩霸王综合资料第三份| 2018年生肖歇后语1155期| 六台盒宝典开奖结果今晚 - 百度| 香港内部精准免费资料| 诸葛亮六和军师| 百乐门全讯网|