Asp.Net WebApi+融云即时通讯+Android构建自己的移动IM

IM,让我敬畏的一项技术

在我的观点里,即时通信,p2p,音视频传输是程序开发中很有难度的领域,这也是为什么我们很少看到有程序员可以在自己的应用里实现这些技术,尤其是即时通信,要实现高稳定性,高并发性,及时性,低流量和弹无虚发,需要丰富的开发经验做支撑,仅仅是拿来一个开源项目恐怕是难以完成这项任务的。放眼看看国内有即时通信技术的,无一不是大公司。大部分的程序开发者的大部分工作时间都是用来做业务层面的开发,根本没有时间和精力去潜心研究一整套的技术框架,因为公司要盈利,要挣钱,没那么多闲钱养着你去专研这些东西。当然,大公司的研发部门就不一样了。

好在现在国内已经有团队开始做即时通信集成业务了,比如融云、环信

目前一个项目中正好需要用到即时通信技术,自己搭建是不现实了,时间也来不及。那么问题来了,即时通信技术哪家强?

好吧,我承认是腾讯。可惜腾讯不开展这方面的业务。

最后我选择了融云,问我为什么,我只能说我刚开始只知道融云,而后来融云的技术支持很到位,感觉他们真是用心在做这个产品。关于融云的特性,大家去官网看吧,我说出来就有软文嫌疑了。

养猪的故事

大概是这么回事,你的应用本身肯定带有不少用户对吧,突然有一天,你想让你的这些用户们可以方便地像qq那样沟通,但是自己实现成本有点高,于是有人发现了这方面的需求,他们专门研究这种技术,提供这种服务,开发者只需要使用即可。融云提供的解决方案是这样的,呃,算了,还是讲个故事比较形象。

做为一个程序员,你忍受不了高强度的工作压力,辞职回家养猪去了,成了天蓬元帅。

你养了大概100头公猪,每一头猪都有自己的编号,都有自己的花名,猪迟早要被卖掉,为了日后想念,你还给每头猪拍了头像。

你的猪场没有母猪。(呵呵,好像程序员的工作环境类似:-D)

这一百头公猪被关在不同的猪圈里,互相见不着面。

猪们整天除了吃就是睡,苦闷的不行,想和猪兄猪弟们斗斗地主都不行,聊聊天,说说话什么的就更难了。

你是一个善良的人,看到猪们不开心,你也很发愁,他们不开心,他们就不长肉啊,不长肉你就挣不到钱啊。

于是你想通过什么技术手段来帮助他们进行交流。

就在这个时候,你收到了“促进猪身心健康协会”的邮件,他们宣称已经掌握了一种促进猪之间进行即时通信的高级技术,看到这封邮件,你不禁感到汗颜,想想自己当程序员的时候都没有给人做过IM,现在都有人专业做动物IM了,哎,自己也只有养猪糊口的命了。

汗颜归汗颜,想想能让自己的猪们欢快滴玩耍,也是件好事。于是你决定和“促进猪身心健康协会”进行合作。

“促进猪身心健康协会”告诉你,需要你提供所有猪的编号,猪的花名,猪的头像,然后他们会为每一头猪生成一个专属的铭牌打在猪的耳朵上,这个铭牌上有一串全球独一无二的密钥来标识每一头猪,这个铭牌还有磁性,到时候可以刷卡。

除此之外,每个猪圈里还挂了一台智能电视,猪们平常可以看看动画片,还可以和其他的猪们进行聊天。只要猪们把耳朵靠近这台智能电视,这个电视就会弹出其他猪的头像,它想和哪些猪聊天,就用鼻子选一下,然后就可以开始聊天了

当然了,猪主要是通过声音交流,他们只要哼唧哼唧,“促进猪身心健康协会”就帮助猪们把信息传到对方那里。

于是乎,世界首个即时通信猪场诞生,你的猪场顿时高大上,你家卖的猪的价格水涨船高,国内国外的媒体记者,各国首脑纷纷参观考察,你猪场的猪也越来越多,各路美女也向你表白,从此,出任猪EO,赢取白富美,走向人生巅峰!

靠,我是有多无聊!我不是蛇精病,我不是蛇精病,我不是蛇精病......

服务端搭建

服务端我这里采用了Asp.net MVC Web API 的方式,主要是因为原有的项目的服务端就是用的.net的mvc的,用户管理什么的都已经做好了。现在服务端需要做的工作之一就是,在数据库中增加一个字段用来存放每一个用户的融云密钥,然后在用户添加和用户编辑那里,增加获取密钥的功能,融云已经提供了获取密码的类,直接调用就行。有了密钥,你的这些用户就算是加入到了融云的体系里面了。

除了这项工作,你还需要在移动端的登陆方法里,为用户返回他的密钥,同时返回该用户的好友信息,我把所有需要返回的数据类型定义在一个类里,然后web框架会以json的形式返回给客户端。

返回模型定义
 public class LoginResult
    {
        public string status { get; set; }
        public string name { get; set; }
        public string portrait { get; set; }
        public string token { get; set; }
        public List<UserInfo> frindlist { get; set; }

    }
好友信息定义
public class UserInfo
    {
        public string id{get;set;}
        public string name{get;set;}
        public string portrait { get; set; }
    }
  登陆api定义,具体实现代码就不贴了public LoginResult Post(UserModel u)
   {

   }

Android端需要注意的地方

有了服务端做数据支持,客户端拿到自己的密钥和好友信息后就可以初始化融云的操作了。相关代码在融云的文档和demo都有,我就不贴出来了,说说需要注意的地方

1、连接融云的方法最好写在Activity中。

2、确保设置好友的方法得到了执行 。

3、自定义回话列表,如果需要启动选择好友界面,可以使用如下代码:

Intent intent = new Intent(getActivity(), RongActivity.class);
intent.putExtra(RCloudConst.EXTRA.CONTENT, FriendMultiChoiceFragment.class.getName());
startActivity(intent);

上个效果图

      

那么问题就来了  

前十几年IM都是为人类服务,从pc端到移动端,从普通沟通到业务沟通,从专有应用到大众应用,从大公司到创业公司,我就在想,下一个十年应该就是物联网的IM,不管是大企业还是小公司,都可以便捷的构建物联网应用,家居设备,工业设备,监测设备都可以便捷的接入互联网,而物联网的通信技术其实也可以看做是一种IM,届时会出现类似融云这样的集成服务商吗?

所以说,不想养猪的程序员不是好CEO。

好吧,我承认我想吃肉了,最近节食减肥中......

^(* ̄(oo) ̄)^

时间: 2024-11-05 18:51:19

Asp.Net WebApi+融云即时通讯+Android构建自己的移动IM的相关文章

Vue+原生App混合开发手记#2 融云即时通讯

最近开发的一个医药项目中要求加入即时通讯,最后选择了融云IM即时通讯服务,融云即时通讯包含Android SDK,iOS SDK以及Web SDK,为了节省开发时间,使用了Web SDK,这样在Android平台和iOS平台上都能表现一致.这是部分界面的效果, 分为两类用户,一类是医生,接受患者的咨询,一类是患者,可以与医生交流: 医生用户看到的界面 患者用户看到的界面 聊天界面       获取App Key 首先进入融云官网,找到Web SDK开发指南,按照提示先注册一个账号,拿到AppKe

iOS开发融云即时通讯集成详细步骤

1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注册了融云开发者帐号,请前往 融云开发者平台 创建应用:如果您还没有注册融云开发者帐号,请前往 融云官方网站 首先注册开发者帐号,注册后创建应用.注册地址  https://developer.rongcloud.cn/signup 3.登陆融云开发者平台 https://developer.rong

融云即时通讯~~

iOS开发融云即时通讯集成详细步骤 端身正义 发表于 2016-04-12 16:12:11 1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注册了融云开发者帐号,请前往 融云开发者平台 创建应用:如果您还没有注册融云开发者帐号,请前往 融云官方网站 首先注册开发者帐号,注册后创建应用.注册地址  https://developer.rongclo

thinkphp整合系列之融云即时通讯在线聊天

随着技术的发展:现代的网站:越来越趋于应用形式了: 不再是像以前那样需要用户刷新页面:获取数据了: 服务器端可以主动向用户推送数据:更加及时性了: 比较突出的就是即时通讯在线聊天: 今个:我们要打造的就是类似于网页版微信的功能: 示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin 一:注册融云账号 如果我们不是以即时通讯为主营业务:那么建议使用第三方的服务:这里以融云为例: 官网:http://www.rongcloud.cn/ 注

音视频即时通讯—Android 视频开发

移动互联网随着智能手机的普及应用越来越广泛,所谓移动互联网是将移动通信和互联网整合在一起,使移动设备(包括手机和上网本.Pad平台)可以随时随地地访问互联网资源和应用获取相应的信息和处理. 从2011年开始,“三网融合”正式被国务院纳入十二五计划并开始实施.国务院十分明确的把三网融合作为全面提高信息化水平的重要手段进行定位,彰显出三网融合在国家战略层面发展不可替代的重要性,也为三网融合在十二五期间的发展提出了明确的方向和目标.在同一的治理平台下,实现音频.视频.数据信号的传输和管理,提供各种宽带

ImFire即时通讯系统构建(前言)

缘起termtalk 一切起源于我对蘑菇街termtalk开源IM系统源代码的好奇,termtalk简称tt.无论如何,都应该先向tt致敬,开源实属不易.看了一些分析tt架构的文章,感觉还不错,说是能支持高并发高可用的.听说有一些公司也借用了该开源代码做产品,那tt应该还是不错的.但是正等我去打开tt服务端源码向学习一下的时候,感觉代码中不尽如意的地方不少了.看得不算仔细,但是架构中单点服务的位置太多了,例如route server只有一个,im客户端发的每一个消息都会广播到所有的msg ser

ImFire即时通讯系统构建(架构)

msgServer集群(ms) 设计作用:该服务主要提供客户端的接入服务.每个ms维护当前接入用户的用户状态和心跳,每个ms地位是对等的. 设计考虑: ms之间不会直接交互,减少交互的复杂度.在用户数量增大的情况,只需要简单增加ms节点就可以解决. routeServer集群(rs) 设计作用:该服务主要保存了为ms之间的信令传递(实际也就是用户之间)提供中转服务.可以配置共用n个rs主节点,每一个rs节点负责一部分用户与ms之间的映射关系,组成一个rs集群. 例如配置有4个rs节点分别为rs0

ImFire即时通讯系统构建(需求)

ImFire需求 一期需求(近期) 1.新用户(账号)注册. 2.用户登入登出,支持pc端,移动端同时登录. 3.获取好友列表. 4.根据用户id或用户名申请添加好友. 5.发送单聊消息(可发往陌生人). 6.新建群聊. 7.申请加入群聊. 8.发送群聊消息. 9.获取聊天记录. 二期需求(远期)

融云参加RTC实时互联网大会 现场集成IM SDK

9月21至22日,由全球实时云服务商声网Agora.io主办的RTC2017实时互联网大会在北京万豪酒店成功举办.作为亚洲最权威的RTC实时通信行业技术盛会,会议吸引了来自全球上千名开发者参加,Google.Slack.阿里巴巴.猎豹移动.荔枝FM等公司的技术大咖分享了各自在实时通信领域的技术.应用与经验.融云作为声网紧密合作的伙伴受邀参会,出席全球首个实时互联网生态圈Agora Plus启动仪式,并在Coding Workshop的环节中,助力开发者现场实现App即时通讯能力. 成为全球首个实