关于社交项目、融云的说明

(适用于ydm-java接口与后台,如有误入,但愿也能给您带来帮助)
引子:

涉及过3个社交项目,后宫、聊妹、蜗伴,均用的是融云作为视频聊天的第三方;实际上融云主攻IM文字聊天,后期才增加了声网的视频、音频通话,作为服务端涉及的功能也很少,只做了一些必要的;因为融云提供的和业务上关联不大,我们的业务是一对一聊天扣费,普通的文字聊天且不谈,走一条扣一次就行了,但是涉及到通话类的,服务端根本无法100%掌控App两端的结束(没电、断网等不确定因素),所以在这块业务和代码上处理的就繁琐很多。

服务端关于融云的调用:

融云提供 官方服务端demo,可以拿来直接用。
服务端文档
融云是这样描述的:

  • 用户服务:从 App 服务端管理用户状态,获取身份认证令牌等。
  • 群组服务:从 App 服务端管理群组成员信息。
  • 聊天室服务:从 App 服务端管理聊天室信息,包括聊天室成员禁言、封禁服务。
  • 消息发送服务:从 App 服务端发送各种类型消息。
  • 敏感词服务:从 App 服务端管理消息敏感词服务。
  • 服务端实时消息路由:提供融云服务端到 App 服务端的消息路由服务。
  • 消息历史记录服务:提供 App 用户聊天消息历史记录下载服务。
  • 在线状态订阅服务:提供将 App 用户的在线状态同步给开发者的应用服务器的服务。
  • 其他高级 API 接口服务:如果您需要额外的服务端接口能力,请联系我们的销售团队,或提交需求工单给我们。

实际上我们只用了用户服务的一点点,其他的因为种种原因:

  • 群组、聊天室;(业务不需要)
  • 实时消息路由、在线状态订阅。(付费且太贵)

细读用户服务的文档可知,用户要在App端进行聊天会话需要一个标识符(token),这个token由服务端生成,代码里的做法就是在注册的时候将id、头像、昵称作为参数请求融云,得到返回值并保存;在修改资料的时候还需要更新一下头像、昵称(如果用户修改的话)。服务端就利用融云做了这一步而已,像用户封禁、黑名单均是自己的逻辑控制的,后期的话可以完全替代,但是这样做会影响可移植性(或许我是多虑了)。


获取token的流程

另外,敏感词也可以用一用,完善应用。(比如不让用户输入QQ、微信号什么的)

服务端关于社交 聊天 的逻辑:

大体上都在 IMController 以及 ChatService 层,下面以A和B进行聊天作为示例:

  1. 发普通的聊天以及送礼物均是发一下走一下接口,接口里直接扣掉A的金币,根据B的分成比例给B转为人民币字段值;
  2. 语音、视频聊天则是A和B两端在融云提示接通时都走一次接通接口,接口做去重处理返回A和B同一个订单号,然后A和B每隔1分钟请求扣费接口,接口同样做去重处理只扣一次,并返回付费人的金币数,前端根据返回值进行判断,另外,如果A正常挂断了,也会走一次扣费接口,说白了,接口就两个,一个是创建的接口,另一个就是扣费的接口;在后期蜗伴项目中,想要达到空闲这一状态的判断,在扣费接口里多了一个值,叫做挂断,代表这个接口挂断了,A和B也就都空闲了。

写于2017/03/20。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,032评论 0 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,650评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • 亲爱的朋友, 祝好!不知不觉,又到了周日,想想身后堆积如山的作业,就不得长叹一声。昨日和朋友聊天,聊到自己这几日...
    居无所处阅读 174评论 0 0
  • 今天早上8点坐火车回武汉,一路上把世界是平的看完。书中讲的是我们正处在全球化3.0版,将我们带入这个新时期的动力既...
    顾国胜阅读 206评论 0 1