(转)基于即时通信和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 ...
随机推荐
- Android实现贪吃蛇游戏
[绥江一百]http://www.sj100.net 欢迎,进入绥江一百感谢点击[我的小网站,请大家多 ...
- android手机操作SD的使用方法
写入SD卡 package com.example.openfileproject; import java.io.File; import java.io.FileInputStream; impo ...
- U大师装系统
主要步骤 1. 若是ghost版本,直接使用智能快速装机版即可安装. 2.安装64位操作系统(iso文件) 1)下载系统地址 http://msdn.itellyou.cn/ . 2)制作好U盘启动, ...
- JavaScript之表格修改
讲到表格,我们不免都了解它的属性及用途. colspan跨列(纵向的)和rowspan跨行(横向的). 表格中<tr></tr>标签标示行标签:<td></t ...
- Android之图片窗口和大小调节
结构图: 基类: package ch.halcyon.squareprogressbar.example; import android.app.Activity; import android.a ...
- 2013年7月28日web前端学习笔记-------head相关标签应用
7月份快过完了.趁周日写写学过觉得有用的东西. 1.缩略图的展示问题,不要以为缩略图设置了width,height,就是缩略图了.比如一个300kb的500*500原始图片,用户请求web服务器后,展 ...
- NDIS IM 驱动那些事情
最近不知道为什么开始学习windows NDIS驱动开发,用的是寒江独钓的例子,其实他的改的代码也就一点点,说的有用的东西也就那么多,不过还是感谢他出了这么一本书,不然这真的就没有一本稍微好一点的书籍 ...
- 如何在UINavigationBar上添加UISearchBar以及UISearchDisplayController的使用 --OC --iOS
那我们开始吧,下面是Sely写的一个Demo,分享给大家. 新建一个项目, UISearchDisplayController 的 displaysSearchBarInNavigationBar太死 ...
- JavaScript最佳实践:可维护性
代码约定 一.可读性 代码缩进 包含注释 二.变量和函数命名 变量名应为名词如car或person 函数名应该以动词开始,如getName().返回布尔类型值的函数一般以is开头,如isEnable( ...
- [转]WINDOW进程通信的几种方式
windows进程通信的几种方式 1 文件映射 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/O操作,只需简单的指针 ...