6

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

对于 iPhone/blackberry,我可以使用内置的 HTTP 库与我当前的实现对话,或者我可以在服务器上编写一个套接字侦听器并使用套接字与其对话。这样做有什么好处吗?为什么非浏览器 HTTP 客户端似乎不受欢迎?

4

1 回答 1

1

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

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

于 2010-08-17T14:10:16.130 回答