如何使用Firebase创建Android聊天应用程序

如何使用Firebase创建Android聊天应用程序,第1张

如果你不了解Firebase,可以看一下之前的报道。简单的你可以说通过引入Firebase,你可以通过api去构建实时性的应用,和Meteor相比Firebase是如此的简单。Firebase和绝大多数铅戚云服务一样,不需要额外的服务器硬件设备,并且是可以随时扩展的,对数据存储容量没有限制,Firebase 最高能处理百万级的并发和 TB 级的数据传输,数据发生更改,同步敏感颗粒度基本达到 10 毫秒级别。另外通过简单的api,你仅需槐如陵要10几行代码,就可以写一个实时性聊天室。总结一下Firebase有以下几个优点:1.云服务,随时扩展,高性能,无需部署管理自己的服务器,数据库,大大减少工作量2.api简单,使用起来非常的方便,可大大减少代码量3.可通过网页对数据进行管理,很方便经过这段时间的使用,也发现几个缺点:1.数据结构和数据库存储方式不一致(由于想支持REST方式读取数据)2.不能部署自己的数据库(很多项目都需要自己维护数据库的)3.目前数据 *** 作能力较弱(有很多需求(稍微复杂点的查询)目前Firebase很难支持)4.数据分析功能很弱,只能查看流量和当前在线人数(独立数据库的话,这部分很容易做的更强大)5.不支持离线开发(废话。。) 总结一下就是Firebase弱化了数据库的存在,看起来很酷,但是现实情况下出于安全、数据分析等考虑,橡宏自己维护数据库才是更合适的。如果既想使用Firebase的便捷,又想自己维护数据库,那么End.js或许是个好选择。End.js学习了Firebase的api,同时基于socket.io和MongoDB,提供了类似Firebase的功能。End.js是Node.js的一个package,所以很方便的和其他package一起使用。简单的入门使用1:安装npm install end -g2: 服务器端使用End.init(mongo_config,sio_config)3: 客户端使用var chat = new End('chat','htcalhost:8080'),chatRoom = chat.c hild(window.location.search.split('?')[1]),chatMsgs = chatRoom.child('msgs')chatMsgs.on('child_added',function(msg){$('.msgs').append('<div class="msg">'+msg.value.name+' : '+msg.value.text+'</div>')})$('#btn_send').click(function(){var name = $('.txt_send_name').val()var text = $('.txt_send_text').val()chatMsgs.push({name:name,text:text})})

开慎旅发一个简单的Android聊天软件神孝启,需要将开发一个Android应用,以及服务端程序。

客户端登录后初始化socket长连接,向服务端发起链接,服务端收到客户端链接,返回链接成功,即客户端上线成功。

客户端上线成功后,即可以向服务游如端发送消息,服务端收到消息后,将消息转发给指定的客户端。一条聊天消息即发送成功。

1 用一个EditText作为用户名输入口,用一个按键确定。

2 注册一个广播接收器,专门接收由后来的聊天界面发过来的消息广播(包括发信人,收信人,消息体)。

3 创建一个客户端连接服务端的方法(要在线程中启动该方法),连接成功并获取输入输出流以后,再在里面启动一个输入流管理线程(接受并处理由服务端发送过来的消息)。并通过intent启动下一个好友列表界面(同时把自身用户名发给下一界面)。

4 对于输入流管理线程,要先判断接收到的是好友名单还是聊天消息发送两种广播,(服务端发送两种信息时可以加个标签以便线程区分)。然后分发出两种广播,一种广播后面的好友列表界面接受的在线好友名单,另一种广播出聊天界面接收的聊天信息。

5 在菜单下做一个退出Activity按键,方便用户退出程序。

6 当一切准备好以后,用户在输入用户名并点击确定,就销派唤可以实现以上 *** 作,同时进入了好友列表界面(前提是能正确连接上服务端)。

二 好友列表界面

1 注册一个广播接收器,专门接收由登录界面的输入流管理线程发送过来的好友名单广播

2 用listView逐个显示好友名单。

3 获取用户登录界面发过来的自身用户名。

4 给listView绑定一个监听器,当用户点击listView上的某一好友时,通过intent启动下一个聊天界面,并把所点击到的好友用户名以及自身用户名发给下一个界面。

三 聊天界面

1 获取好友列表界面发送过来的聊天好友用户亏凯名以及自身用户名,并在Title上显示。

2 用一个EditText作为聊天消息输入口,用一个按键确定输出。

3 当用户点击确定以后,发送一个消息广播(包含发信人,收信人,消息体),让用户登录界面的消息广播接收器接收。

4 注册一个广播接收器接受用户登录界面的输入流管理线程发送过来的消息。

服务端设计思路:

消息处理界面(只有一个界面)

1 创建一个监听连接请求方法 (监听客户端发送连接请求,需要在线程中启动)。

A 当用户发送连接请求时,生成socket对象。由该socket对象生成输出流和输入流,从输入流中提取出客户端发送过来的用户名,把用户名放到sickName数组上,把输出流放在ArrayOut数组中。

B 发送新客户端XXX连接成功广播。

C 预先用sickName数组和ArrayOut数组创建发送好友列表方法(给各已连接客户端发送好友名单),在这里调用方法。

D 新生成并启动输入流管理线程(接受并处理客户端发送过来的消息,由于有一个新用户生成,就新生一个输入流管理线程,所以客户端发送的消息不会混乱)。

2 创建发送好友列表方法。羡老

3 注册两个广播接收器,一个接收新客户端XXX连接成功广播;另一个接收输入流管理线程发送过来的聊天消息,识别出目标对象,并向目标对象分别发送消息。

4 在onResume方法中启动监听线程。

5 在菜单下做一个退出Activity按键和刷新按钮(再次发送已连接用户名单给各客户端)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12357158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存