不久前,我在ASP.NET、MVC和jQuery上做了一个AJAX聊天。javascript大约每隔7秒就会命中服务器一次,以检查新消息。显然,随着聊天的增长和用户的增加,这在性能上是可怕的。随着如此多的请求进行,网站流量呈指数级增长。用户可以整天开着电脑,甚至不在那里,他们仍然会每隔7秒进行一次点击。
有没有更好的方法来做这件事?我听说过一种叫做“推”的东西,但我还不能真正理解它。我想我只需要指出正确的方向。
1.)开发AJAX聊天并使其可伸缩的最好方法是什么?
2.)什么是推送,我如何才能在jQuery中做到这一点?
发布于 2011-10-18 20:14:04
1。)开发AJAX聊天并使其可伸缩的最好方法是什么?
我同意@freakish关于IIS的复杂性和潜在的伸缩性不足的看法。
然而,微软有一个相对较新的选项,称为SignalR,它可能成为ASP.NET的核心部分。
2。)什么是推送,我如何才能在jQuery中做到这一点?
在其他地方部分回答,但它是服务器和客户端之间的长期持久连接,这意味着当服务器有新数据可用时,它可以立即将数据‘推送’到客户端。
jQuery确实支持发出AJAX请求,但是核心库不支持使用公开方式进行HTTP长轮询或HTTP流。有关详细信息,请参阅此SO answer to 'Long Polling/HTTP Streaming General Questions'。
发布于 2011-10-18 05:11:23
Server push是一种技术,它允许服务器将数据推送回客户端,而无需强制客户端发出大量请求(例如每隔7秒)。这实际上不是javascript的问题,而是一个很好的服务器脚本。由于server-sent events和/或WebSockets,即将到来的HTML5将使它变得简单。这将是不同机器之间的真正TCP连接。
但是,如果你打算让一个网页与旧浏览器兼容,那么最常用的技术就是长轮询。客户端向服务器发送请求,服务器直到有新数据时才对请求作出响应。如果是,则做出响应,客户端在收到数据后立即使用新请求调用服务器。然而,在实践中,这要求服务器写得很好(例如,它必须同时维护数千个空闲请求),这对开发人员来说可能是一个相当大的挑战。
我希望这能帮到你。:)祝你好运!
发布于 2011-10-18 20:24:03
您应该使用的技术是使用WebSockets在网页上进行实时持久长时间运行的连接。您可以使用此library。
https://stackoverflow.com/questions/7799256
复制相似问题