当套接字可用时使用HTTP长轮询(例如iPhone,Blackberry)

时间:2010-08-16 05:48:21

标签: iphone networking blackberry comet long-polling

我目前正在服务器和web / iPhone / Blackberry客户端上编写一个带有Node.js的简单跨平台应用程序。带宽和延迟要求类似于您在IRC“派对游戏”或任何聊天系统中看到的内容。我使用http长轮询开发了Web客户端(两种方式都说JSON)。

对于iPhone / blackberry,我可以使用内置的HTTP库与我当前的实现进行通信,或者我可以在服务器上编写套接字侦听器并使用套接字与它通信。这样做有什么好处吗?为什么不鼓励非浏览器HTTP客户端?

1 个答案:

答案 0 :(得分:1)

无法与iPhone通话,因为我对网络堆栈的技术细节知之甚少,但对于来自浏览器的BlackBerry HTTP请求通常与应用程序发起的请求不同。 BlackBerry作为解决方案不仅包括设备端TCP / HTTP堆栈,还包括BlackBerry服务,其中包括(取决于您是否是企业)BlackBerry Enterprise Server以及托管在其上的移动数据服务(BES / MDS)您的企业网络或Research In Motion托管的BlackBerry Internet Services(BIS)服务器,它代理来自移动浏览器的所有连接。这些服务器可以做很多事情,包括处理cookie的某些方面,认证和内容转码,以使移动设备更容易消费内容(图像等)。对于BES / MDS,它们甚至可以充当HTTPS连接中的安全端点。

无论如何,这也意味着您从普通TCP / HTTP连接中获得的许多功能实际上都是在设备外发生的,因此可以由运营商或企业或RIM控制。裸机套接字是不同的,因为中间的各种服务器无法对TCP套接字做出尽可能多的关于HTTP连接的假设,因此它们无法处理您的HTTP请求。由于这个原因,很多黑莓应用程序实际上最终都在套接字层之上编写了自己的HTTP客户端,所以如果你必须做一些类似HTTP长轮询(Comet?)的话,一定要把它写在套接字连接之上,不是内置的HTTP连接。