打开TCP流到服务器的最佳方式是什么?

问题描述:

相当难以确定的问题,但基本上我想知道什么是最好的方式(而不是“你的意见”,但“这将最充分地满足我要提出的要求)是打开一个流连接从一个客户端网页到服务器,以便可以发送数据到另一个没有轮询?我想这个术语是HTTP绑定与HTTP轮询。这里的上下文是一个聊天应用程序 - 我想流式连接如此浏览器不会不断推送请求,客户端在这里是KnockoutJS和jQuery,我希望能够将数据来回推送为JSON(或者至少可以通过jQuery和Knockout的toJSON操纵)。服务器端 - 不太清楚它会是什么,但我可能会在Linux服务器上运行,所以任何兼容的东西都可以正常工作。 如果有更多的细节我可以提供,请让我知道 - 我确信我留下了一些明显的细节。此外,我知道这可能是一个重复的问题,所以如果你的答案是一样好,关闭一个愚蠢,并在一个链接,这很好。 谢谢!打开TCP流到服务器的最佳方式是什么?

+1

谷歌和搜索SO“彗星”,“反向AJAX”,“长期投票”。并在这里看到:http://en.wikipedia.org/wiki/Comet_%28programming%29 – 2011-04-29 21:35:30

我认为你要找的就是彗星。基本思想是保持HTTP请求打开更长时间,以便服务器可以在客户端发送数据时向客户端发送数据,而不是客户端必须不断地轮询服务器以获取新数据。有多种方式来实现它。这个Wikipedia article是更多信息的好开始。

这个MIX 2011 video讨论了长轮询技术(尽管视频中的建议是网络套接字将成为未来浏览器的更好解决方案)。

+0

看起来像AJAX长轮询是我想要的...我正确地说,它会像一个简单的jQuery' $ .ajax'请求在服务器端保持打开状态,并在客户端恢复后立即重新打开? – 2011-04-29 21:39:04

+0

Oooh,一个视频!来自MIX,不能少!谢谢! – 2011-04-29 21:40:27

+0

@Thomas:afaiu并不那么简单。长期投票/彗星本质上是一个http黑客攻击。你需要一个服务器来处理连接,并且我确信你需要一些特殊的js客户端。彗星非常繁琐而且不容易设置。 99.9%你最好只是定期对新数据进行Ajax请求。几乎所有基于Web的聊天客户端都是这样工作的。 – 2011-04-29 21:43:19