4
reorx OP @xhinking 应该说是这个**网络**服务的API,而不是**网站**,因为网站是被通过HTTP来访问数据,而网络服务是用socket。
我之前也是一直受限于网站开发的思维,其实networking 和 web是不一样的。 |
5
9hills 2011-06-14 12:32:01 +08:00
mark. 最近也在弄类似的东西。
但不限于Andriod。 整个项目的架构大概是这样 1. 分布式的传感器---> 传感器主节点 ---> Socket Server ---> MySQL数据库 2. MySQL数据库 ----> HTTP Server ----> Browser | ----> Android 目前和Andriod通讯用的json,Socket Server和HTTP Server都用的python。但是这个流程是单向的 我的目标是实现在web界面和android上控制各传感器节点。。 |
7
9hills 2011-06-14 12:38:55 +08:00
所以希望有比较好的Socket Server框架。实现控制各节点的功能。
主节点和Server通讯不采用HTTP的原因,主要是流量问题,因为用的是GPRS网络,就这每天还有2~3M左右的流量。 |
8
reorx OP @9hills 你是如何解决存储数据对象化模块被Socket Server和HTTP Server所共用的问题呢?
+--------------+ +----------+ |socket request|<--->|web server|<----->+---+ +--------------+ +----------+ | | +------------+ +-------------+ |API| |http request|<----->|socket server|<-->+---+ +------------+ +-------------+ 唔,API 先去吃饭,一会回来…… |
9
cmonday 2011-06-14 12:51:04 +08:00
@reorx 张教主在写一个开源项目zpage: https://groups.google.com/forum/#!forum/kanrss_pyer
我不懂python,不过我现在在帮这个项目写android客户端(目前还在准备阶段,不过我已经开始写代码了),一开始打算先用http请求和客户端定时请求数据的模式,下一步应该会尝试实现你说的socket通信和服务器端推送的模式 你可以跟他聊聊~ |
10
9hills 2011-06-14 12:56:20 +08:00
|
11
xhinking 2011-06-14 13:22:43 +08:00
正在准备一个类似的项目,不过使用的是Web端API的方式。之前还没有考虑过使用其他方式,感谢@reorx 给了很好的启发。关注该问题的最终解决方案。
|
12
reorx OP @cmonday 张教主是一个很值得敬佩的人,我也很想认识他~
我简略看了一下zpage的开发计划,感觉这个项目底子里还是在做web,如果说要用到socket的部分,大约会是他的通知系统,不过这一部分完全可以单独做,比如用一个消息池额外存储用户的事件动态,socket服务器不断检测是否更新。与以手机客户端为中心的服务还是有所区别的。 不知道zpage为何停滞了,如果有机会,我也会加入到这个开源项目中的 :) |
13
reorx OP @9hills 嗯,整理一下我的想法:
http://www.cl.ly/2Q1I0E0Y3Z2i0C1m3D0T 我的设想是,无论Web(HTTP) Server 还是 Socket Server,都只作为接收用户请求的服务器前端,由一个统一的“C”来处理所有与数据有关的部分,这个“C”借用MVC开发模式中Controller的概念,相当于独立于请求之外的总数据控制器。其中的“V”(Views)借指request与response的处理器,通过ORM和Memcached获取数据,并和Message Pool里的事件交互。 才疏学浅,许多概念都是凭臆想妄加引用的,还请指正。 |
14
reorx OP |
15
9hills 2011-06-14 15:51:40 +08:00
@reorx 恩。我也这么觉得。有个中间层比较好。
不过没有弄过这个方面的东西(其实那些传感器才是我的主业。。),所以也不知道怎么弄 总的来说,这个中间层应该是基于事件驱动的,具体怎么弄。。。貌似JAVA方面的比较多。 我搜到一个Python的, twisted,正在看 |
16
reorx OP @9hills twisted略有了解,它应该就是基于事件驱动的网络编程框架,所以我想它可能适合去做“中间层”。
下一个目标就是twisted了,真真感受到,即便只是一个web开发者,也不能只懂HTTP不懂TCP/IP呀。 |
18
lijia18 2011-11-21 18:06:48 +08:00
完全socket,太nb了,为啥要完全socket呢?
|
19
reorx OP @lijia18 因为这个应用必须与服务器保持实时连接,以便能接收服务器主动推送的信息。当然也不是说完全不用HTTP,是根据协议的特性去应用在不同的场景。Socket用于做心跳连接,和通知类(单次少量响应率高的)数据的传输;HTTP用于访问无须反馈的接口,获取相对较多的数据。
|
20
clc3123 2011-11-21 22:18:27 +08:00
https://github.com/igrigorik/em-websocket
找了个ruby的。 配合eventmachine,em效率还是挺强的,开发又简单,就是事件机制有点绕不过弯来一开始。做过http的,websocket没接触过,应该也差不多吧。 |
21
clino 2011-11-22 10:42:39 +08:00
感觉"服务器可以主动向客户端推送更新数据(非HTTP式的单向连接)"这个比较难做到.而且这样的话android这边耗电量会比较...
|
22
reorx OP @clc3123 嗯,websocket相当于满足了web上的实时性需求,不过不能用于android啊,还是要通过socket解决。
|
23
ywjno 2011-11-22 12:59:45 +08:00
写一个rest风格的api出来,服务器根据该url请求返回一json文件,客户端接收该json文件并解析出来,这应该是最简单了的吧
|