3

我需要创建一个类似于 facebook 聊天的聊天。

我正在考虑使用 ajax 轮询(每 2-3 秒发送一次请求)。

这是一个好方法吗?或者我需要使用其他服务器端语言,如 erlang 和 server-comet ?

4

2 回答 2

2

或者我需要使用其他服务器端语言

不——这不是真的相关——最大的问题是 HTTP 不支持推送通知——所以你在 Web 服务器上使用的语言几乎是无关紧要的。

服务器彗星?

Comet 是一种编程技术——不是一种语言——专门用于解决 HTTP 中没有推送的问题。按照惯例,浏览器发送请求,网络服务器创建响应,然后将其发送回客户端。使用 Comet,网络服务器会一直等到:

1) 响应中包含一些更新

2) 定时器到期

在发送响应之前。这样做的结果是,如果与网络服务器的非活动连接会导致大量连接 - 这可能会导致性能问题。

另一种方法是使用 HTTP 挖掘客户端程序以在浏览器中运行,该浏览器使用不同的协议连接到聊天服务器。使用 ActiveX、Java 或 flash 可以做到这一点——所有这些都有很大的缺点——尤其是可移植性。

有几个使用 PHP 和 javascript 的预先编写的解决方案 - 提示 - 如果文档没有提到 Naggle,那么他们可能没有考虑可伸缩性/性能。

C。

于 2010-06-04T11:50:54.990 回答
0

这取决于我猜你有多少用户。当您没有很多用户时它会起作用(这就是他们过去的做法)。但在我看来,聊天不是实时的,因为您可能会延迟 x 秒(轮询间隔)。

对于大量并发用户,轮询模型将无法扩展。那么你应该真正研究非阻塞长轮询(至少)。我认为如果可能的话,您应该研究非阻塞长轮询技术,因为这就是大型站点进行实时应用程序的方式。但是您的服务器应该允许您安装其他编程语言,因为 PHP 不适合这种技术。

于 2010-06-07T03:38:10.457 回答