Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果我想创建一个AJAX聊天室,应该使用什么通信技术来保持可伸缩性?_Javascript_Jquery_Ajax_Client Server_Push - Fatal编程技术网

Javascript 如果我想创建一个AJAX聊天室,应该使用什么通信技术来保持可伸缩性?

Javascript 如果我想创建一个AJAX聊天室,应该使用什么通信技术来保持可伸缩性?,javascript,jquery,ajax,client-server,push,Javascript,Jquery,Ajax,Client Server,Push,不久前,我在ASP.NETMVC和jQuery上进行了一次AJAX聊天。javascript大约每7秒就会访问服务器以检查新消息。显然,随着聊天的增长和越来越多的用户的加入,这对性能来说是可怕的。随着大量请求的进行,网站流量呈指数级增长。用户可以整天开着电脑,甚至不在那里,他们仍然会每7秒点击一次 有更好的方法吗?我听说过一种叫做“推”的东西,但我还没能真正理解它。我想我只需要指出正确的方向 1.)开发AJAX聊天并使其具有可扩展性的最佳方法是什么 2.)什么是推送,我将如何使用jQuery实现

不久前,我在ASP.NETMVC和jQuery上进行了一次AJAX聊天。javascript大约每7秒就会访问服务器以检查新消息。显然,随着聊天的增长和越来越多的用户的加入,这对性能来说是可怕的。随着大量请求的进行,网站流量呈指数级增长。用户可以整天开着电脑,甚至不在那里,他们仍然会每7秒点击一次

有更好的方法吗?我听说过一种叫做“推”的东西,但我还没能真正理解它。我想我只需要指出正确的方向

1.)开发AJAX聊天并使其具有可扩展性的最佳方法是什么


2.)什么是推送,我将如何使用jQuery实现这一点?

Node.js构建这样的东西变得非常流行,并且支持套接字连接,因此只有在出现新消息时才能将数据推送出去。但那将是学习一些全新的东西

另一个很好的可能性是使用MVC的OutputCacheAttribute并使用SQL依赖项选项,这样您的AJAX页面可以被缓存,并且只有在出现新的聊天消息时才会成为新的请求。您还希望控制器是异步控制器,以帮助减少IIS上的负载

享受吧,优化总是很有趣而且非常耗时

是一种允许服务器将数据推送回客户端的技术,而无需强制客户端发出许多请求(如每7秒一次)。这实际上不是javascript的问题,而是很好的服务器脚本。由于和/或的原因,即将推出的HTML5将使其变得简单。这将是不同机器之间的真正TCP连接

但是如果你想让一个网页与旧的浏览器兼容,那么最常用的技术就是长轮询。客户机向服务器发送请求,服务器在获得新数据之前不会响应该请求。如果是这样,则会做出响应,客户端在收到数据后立即使用新请求调用服务器。然而,在实践中,这要求服务器编写良好(例如,它必须同时维护数千个空闲请求),这对开发人员来说可能是一个相当大的挑战

我希望这有帮助。:)祝你好运

1.)开发AJAX聊天并使其具有可扩展性的最佳方法是什么

我同意@freakish关于IIS的复杂性和可能缺乏可伸缩性的观点

然而,在工程中有一个相对较新的Microsoft选项,名为,它可能成为ASP.NET的核心部分。有关此问题的更多详细信息:

2.)什么是推送,如何使用jQuery实现推送

部分回答在别处,但这是服务器和客户机之间的长期持久连接,这意味着服务器可以在有新数据可用时立即将数据“推送”到客户机


jQuery确实支持发出AJAX请求,但核心库不支持公开执行HTTP长轮询或HTTP流的方式。有关详细信息,请参见。

您应该使用的技术是使用WebSocket在网页上进行实时持久长时间运行的连接。您可以使用它。

这听起来像IIS和ASP.NET很难维护许多空闲请求。我真的不能说,因为我是Python/Django开发人员的nginx/Apache。但是我以前做过很长时间的轮询,是的,要让它处理数千个请求真的很困难。+1-WebSocket和回退是可行的方法,扩展数千个持久连接并不容易。你应该使用类似的技术