iPhone学习之路 基于HTTP长连接Server PUSH

移动开发 iOS
本文介绍的是iPhone学习之路 基于HTTP长连接Server PUSH,很精确的为我们将讲述了长连接Server PUSH,我们先来看内容。

iPhone学习之路 基于HTTP长连接Server PUSH是本文要介绍的内容,本文主要是围绕长连接Server PUSH介绍,不多说,我们来看内容。

服务器推实现的相关资料

有个不错的文章《Comet:基于 HTTP 长连接的“服务器推”技术》。文章提到Comet现实应用的需求:

监控系统:后台硬件热插拔、LED、温度、电压发生变化;

即时通信系统:其它用户登录、发送信息;

即时报价系统:后台数据库内容发生变化;

也提到多种技术实现服务器推送。

我现在比较同意这个,介绍了选择要注意的事项,比如服务器对long-polling的支持。现在主要关心:

如果数据推送频率不高,并发压力不大,可以用基于 AJAX 的长轮询(long-polling)方式,实现比较简单。nginx有个Module可以支持long-polling,可能以后还支持Streaming。long-polling每次返回数据后是要再次请求。

如果数据变化快,想以推送为主,可以用基于 Iframe 及 htmlfile 的流(streaming)方式。这里有比较不错的介绍,里边还介绍了APE等一些服务器实现,要根据具体情况来选择。比如APE是C实现的,我是用java的,对我来说它不容易扩展(基本javascript的扩展性能可靠性能实现的功能要测试,对于实在想走80端口,这个是我目前找到的功能全,而且官方说支持100K+并发,但是目前资料少,说明用的人不多啊)。

APE1.0主要还是long-polling,流方式使用XHRStreaming在IE上不行;相比而言streamHub流是使用写<script>标签实现的,可以跨浏览器。那些不开源的不要说了,python也不熟悉,Jetty 6 和 Tomcat 6已经支持Comet,一般情况可以满足,并发太大了也要做选择,有人用netty自己实现,支持10万以上。想自己写服务器看这个用xsocket实现了。

2010.5补充:以前对长连接和http persistent connection没有太清晰的概念,在脑子里老是把请求和tcp连接混在一块想。long-polling方式在firebug里能看到一个请求及数据返回响应,然后再请求,但都是同一tcp连接(支持http1.1的服务器)。像streamHub那样用流方式的,我们看到一个返回响应数据不断涨,可通过其它请求,改变这一响应数据内容。以前错误的认为:这样一个响应才是同一连接,long-polling会重新建立tcp连接。

出于性能或其它原因,有些应用比较适合用socket。B/S结构客户端可以用flash,以后HTML5,也是不错的选择。看这里文章中提到:

自己实现的server通常存在性能及可扩展性的问题,因此实现全部功能需要投入大量的开发精力。Hemlock通过flash长连到XMPP Server上。由于XMPP Server(如openfire, ejabberd等)本身就支持多服务器,因此使用默认的版本就可以支持上十万的并发,如果稍加优化,同时支持上百万用户也不会有太大问题。

openfire开源的,基于mina实现 (喜欢java代码的也可以看看red5或者http://code.google.com/p/gfs-server/)

再加几个基于netty的开源项目:

http://openr66.free.fr/GoldenGateFTP.html

http://code.google.com/p/jmemcache-daemon/

http://kevwil.github.com/aspen/

http://code.google.com/p/sensei-search/

(看到过的资料单机2*4core 16GB实现近50万在线连接,每秒处理近10万请求,c实现,内核,网卡等都经过优化;看过java***的就是Using Netty we have comet running on 100.000+ open connections - this uses some GB of memory and 20% of CPU on a quad core server.一个四核服务器10万以上连接)

小结:详解基于HTTP长连接Server PUSH的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2018-06-06 11:01:25

HTTP长连接短连接

2019-04-15 14:37:23

HTTPTCP长连接

2022-12-02 13:49:41

2011-07-26 09:32:08

iPhone 模拟器

2011-07-06 14:22:52

iPhone Push

2020-09-05 17:00:20

HTTP长连接短连接

2011-07-25 18:07:29

iPhone Push Notificati

2024-06-06 09:12:40

数据库SQLServer

2011-07-21 17:35:11

iPhone Table 图片

2023-08-02 08:05:54

push系统迭代APP

2011-07-20 17:22:26

iPhone Flurry

2017-04-24 08:31:26

Node.jsExpress.jsHTTP

2011-08-10 16:44:56

iPhone代理设计模式

2021-11-17 08:21:31

HTTP连接数据

2019-03-20 14:26:56

苹果折叠屏iPhone X Fo

2011-07-18 13:56:19

2011-07-07 08:49:14

iPhone Push Notificati

2011-04-22 10:23:50

Server Push

2022-10-24 08:14:35

长连接负载均衡Conusmer

2009-08-10 16:25:30

JSP SQL Ser
点赞
收藏

51CTO技术栈公众号