我正在尝试使用javascript编写一个聊天客户端,但我只是能够使用XMLHttpRequest与服务器进行通信而受到阻碍,据我所知,这完全不合适,正如许多人告诉我的那样。 / p>
我已经寻找其他网络功能,但没有找到任何,并被告知没有任何。这几乎足以让我停止寻找,除了Gmail似乎在某种程度上这样做。它没有几分钟的请求,然后一旦我向自己发送电子邮件,我在另一个窗口的收件箱发送POST请求并接收电子邮件。由于它几分钟没有向服务器发送任何http请求(我使用firebug进行了检查),因此无法通过这种方式与服务器通信,因此它如何知道何时收到要收到的电子邮件?
答案 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。
优点:
缺点:
对于后端签出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。