我可以使用Javascript与没有XMLHttpRequest的服务器通信吗?

时间:2010-10-17 22:26:09

标签: javascript gmail

我正在尝试使用javascript编写一个聊天客户端,但我只是能够使用XMLHttpRequest与服务器进行通信而受到阻碍,据我所知,这完全不合适,正如许多人告诉我的那样。 / p>

我已经寻找其他网络功能,但没有找到任何,并被告知没有任何。这几乎足以让我停止寻找,除了Gmail似乎在某种程度上这样做。它没有几分钟的请求,然后一旦我向自己发送电子邮件,我在另一个窗口的收件箱发送POST请求并接收电子邮件。由于它几分钟没有向服务器发送任何http请求(我使用firebug进行了检查),因此无法通过这种方式与服务器通信,因此它如何知道何时收到要收到的电子邮件?

6 个答案:

答案 0 :(得分:2)

我回答了一个类似的问题,看看它有很好的答案。

How can I start ajax push website (activemq or cometd or something else)?

答案 1 :(得分:1)

Gmail使用Comet方法的变体。我不确定具体细节,但我认为这是在<script>标签或<iframe>中运行的某种长轮询。 Wikipedia article on Comet有更详细的内容。

答案 2 :(得分:0)

答案 3 :(得分:0)

GMAIL确实使用HTTP。唯一的区别是他们不做民意调查,但我相信标签是http-streaming。它保持连接打开而不是关闭它并再次尝试。

您没有指定您使用的服务器架构类型,但您也可以使用BOSH(例如prosody确实有BOSH)来实现此目的。 Strophe.js是一个真正干净的JavaScript库来实现这一目标。

答案 4 :(得分:0)

他们使用Comet。进一步阅读 - &gt; http://www.ekhoury.com/blog/2007/02/07/ajax-alternatives-gmail-choice/

答案 5 :(得分:0)

您可以考虑WebSockets

优点:

  • 比HTTP(或AJAX / Comet)
  • 的开销少得多
  • 易于在客户端实施。
  • 与HTML5密切相关,因此使用它会获得“奖励积分”。 : - )

缺点:

  • 需要具有WebSockets支持或Adobe Flash支持的浏览器:web-socket-js项目提供后备Flash模拟器。
  • 您需要服务器端支持WebSockets的东西。

对于后端签出pusherapp,它处理您想要创建的应用程序类型的后端。您每天可以免费获得5个客户端和10,000封邮件。

以下是WebSockets的Google简介:http://blog.chromium.org/2009/12/web-sockets-now-available-in-google.html

另外,请查看wsproxy,这是一个WebSockets到noVNC附带的通用TCP套接字代理(HTML5 VNC客户端)。 noVNC有一个C和python版本的wsproxy。免责声明:我创建了noVNC。