(转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案
一、前言、提出问题
公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不能实现这样的功能,让A和B之间可以互相感知对方的位置信息。
于是整理了一下思绪,说白了分解开来就是两个方面的问题:一、实现信息的即时传递,二、实现基站/wifi、GPS的定位。
1. 实现消息的即时传递:说到这个问题大家应该能联想到QQ、MSN、Gtalk这些即时通信软件。
2. 定位:这个让人联想到时下非常火的LBS服务(Location Based Services)。有关LBS详细介绍请移步百度百科http://baike.baidu.com/view/152851.htm
二、应用场景
即时通信和LBS两个热门的技术引出了我们的主角:位置感知服务 (Location-aware service)。那么,有哪些与之有关的场景呢?下面列出了自己想到的几个例子(还有很多,大家可以充分发挥自己的想象力):
1. 手机制作商通过在设备中内置一个定位服务来跟踪手机的位置。比如,苹果官方推出的"Find My iPhone"手机定位服务,可通过Mobile Me帐号来定位iPhone手机目前的位置,可帮助失主找回自己的iPhone手机。
2. 你和朋友一起去郊区旅游,会不会碰到走散的时候?如果这个时候你有一款手机(Android、iPhone、Symbian或其他手机)并且安装了一个可以实现朋友之间位置实时共享并把大家的所在位置显示在地图上的应用,那问题就好办了。
类似的还有朋友之间自驾游、人员跟踪、突发事件、急救等领域都能派上用场。
三、寻找问题的解决方案
1. 关键的问题:即时通信。因为前面的项目积累了基于位置应用的相关经验,所以定位不算一个问题。需要花费比较多精力的地方是实现消息的即时传递。
2. 分析需求:根据提出的问题,A发出的信息需要实时的到达B,反过来就是B发出的信息也要实时到达A。对这种双工实时的通信目前还没有相关的项目经验。
3. 最简单的实现可能用轮询(Polling)了,在这个问题中,轮询意味着使用一种RESTful Web服务(目前我们手机项目普遍使用的服务器接口方式)来为A或B获得(GET)对方的更新。但这种方式有缺点:一则增大服务器的负担,想想如果每个客 户端每隔1分钟访问服务器,而大多数情况下服务器是没有更新数据的,对比起来服务器的负担就很浪费了,1分钟的时间又很难做到实时的更新;二则对于移动设 备,例如手机这种客户端,轮询浪费电源这个手机最宝贵的资源。
4. 解决的方式是长连接。PubSub(Publish/Subscribe,发布/订阅)是一种使用异步消息传递协议的架构性方法,其中发布者和任何订阅者 都是解耦的。在需要向大量客户端发送更新通知的场合下,这些特征使得PubSub成为一种合适的可伸缩性选择。
5. 经过搜索相关资料,决定尝试使用一种基于XMPP[Extensible Messaging and Presence Protocol,可扩展消息传递和现场协议]的PubSub服务
(转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案的更多相关文章
- (转)基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案
在<基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案>一文中,提到尝试使用XMPP协议来实现即时通信.本文将对XMPP协议框架以及相关的C/S架构进行介绍,协议的底层实现不 ...
- (转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
主要包含4个章节: 1. Java 领域的即时通信的解决方案 2. 搭建 Openfire 服务器 3. 使用客户端测试我们搭建的 Openfire 服务器 4. Smack 和 ASmack 一.J ...
- Java进阶:基于TCP通信的网络实时聊天室
目录 开门见山 一.数据结构Map 二.保证线程安全 三.群聊核心方法 四.聊天室具体设计 0.用户登录服务器 1.查看当前上线用户 2.群聊 3.私信 4.退出当前聊天状态 5.离线 6.查看帮助 ...
- comet基于HTTP长连接技术(java即时通信,推送技术详解)
服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息,服务器发送一批数据,浏览器显示消息,同时保证与服务器的连接,当服务器需要再一次的发送数据,浏览器显示数据并保持连接. comet基 ...
- 基于XMPP协议的Android即时通信系
以前做过一个基于XMPP协议的聊天社交软件,总结了一下.发出来. 设计基于开源的XMPP即时通信协议,采用C/S体系结构,通过GPRS无线网络用TCP协议连接到服务器,以架设开源的Openfn'e服务 ...
- QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件
QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ...
- APP Inventor 基于网络微服务器的即时通信APP
APP Inventor 基于网络微服务器的即时通信APP 一.总结 一句话总结:(超低配版的QQ,逃~) 1.APP Inventor是什么? google 傻瓜式 编程 手机 app App In ...
- C语言 linux环境基于socket的简易即时通信程序
转载请注明出处:http://www.cnblogs.com/kevince/p/3891033.html ——By Kevince 最近在看linux网络编程相关,现学现卖,就写了一个简易 ...
- 基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍。最后我们将会实现一个基于Server-Sent Event和Flask简单的在线聊天室。
基于Server-Sent Event的简单聊天室 Web 2.0时代,即时通信已经成为必不可少的网站功能,那实现Web即时通信的机制有哪些呢?在这门项目课中我们将一一介绍.最后我们将会实现一个基于S ...
随机推荐
- CSS之鼠标经过字体光标形状的改变
CSS中的cursor属性是规定要显示的光标的类型(形状). 参阅JavaScript正则表达式 default 默认光标(通常是一个箭头) auto 默认.浏览器设置的光标. crosshair 光 ...
- Hibernate+DWR无刷新三级联动
DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在 ...
- C# 3.0 特性之扩展方法
今天,我们来聊一聊C#的扩展方法. C# 3.0中为我们提供了一个新的特性—扩展方法.什么是扩展方法呢?我们看一下MSDN的注解: 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新 ...
- VS2013编译GLUI
vs自带的OpenGL为1.1版本,太老了. 1,编译glut https://www.opengl.org/resources/libraries/glut/glut37.zip 查看生成路径,可以 ...
- [设计模式]Netd中的命令设计模式
命令模式 有如下的角色: (1)调用者(invoker) (2)命令接收者(receiver) (3)客户端(client) (4)命令对象(command) public interface Com ...
- Java中的分代垃圾回收策略
一.分代GC的理论基础 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大 ...
- Java Web容器的启动与处理请求的过程
容器启动时的加载顺序 一.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<context-param>结点.二.容创建一个ServletContext(ser ...
- WCF 初识(一)
WCF的前世今生 在.NETFramework 2.0以及前版本中,微软发展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/H ...
- opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用
opener 属性是一个可读可写的属性,可返回对创建该窗口的 Window 对象的引用
- 解决IE6中ajax ‘aborted’错误请求中断
给a标签绑定了一个click事件用来触发ajax请求,在IE6中,请求时常会被中断,在其他浏览器中都一切正常. 在IE6中使用Fiddler2和httpWatch监视请求,经常会出现”aborted” ...