我想使用ajax编写聊天应用程序。所以我需要每100毫秒(0.1秒)检查一次数据库中的用户消息表。是否有任何问题,如果我使用setTimeOut每100毫秒调用ajax?任何性能问题?任何陷阱或任何东西?使用setTimeOut进行Ajax调用
回答
这是一个非常糟糕的主意。虽然它可能适用于本地计算机和少数用户,但无法轻松扩展到更多用户。我建议你看看websockets和长时间的投票。
你建议长轮询,所以你可以建议任何例子..?按照我所知,长时间轮询可以使用setTimeout来实现......对。 – 2013-03-25 06:44:49
@DipeshParmar长轮询和常规轮询之间的区别在于,您可以防止您的请求超时,并且服务器在需要时进行响应。您只在前一个过期或完成时发出新请求。您不一定会使用setTimeout,因为当您发送下一个请求时,取决于服务器响应的时间。 – 2013-03-25 06:46:11
@DipeshParmar发送多个请求只是在短时间间隔内频繁发生多个请求,而不是长时间轮询。长轮询本质上意味着服务器不会写任何响应,并且在请求有任何数据写入之前(或者直到请求超时,这可能比几秒钟更长的时间)。只有当前请求过期或当前请求获得数据响应时,客户端才会发出新请求。 – Munim 2013-03-25 06:51:37
更好的选择是使用Socket.IO
。它使这项任务轻松了许多
Socket.IO使得跨浏览器解决方案
服务器例如:
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
客户端(浏览器):
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
编辑:
对于PHP,phpwebsocket类将是一个不错的选择以及客户端jquery plugin
这是一个很好的建议,我自己是node.js开发人员,但问题是标记为asp.net和php。是否asp。网有什么类似websocket的解决方案? – Munim 2013-03-25 06:48:15
@Munim IIS7不支持它,但IIS8会。我相信PHP中的网络套接字目前是可能的。 – 2013-03-25 06:50:11
我是asp.net开发人员。我如何在asp.net中使用这个? – 2013-03-25 06:52:33
的JavaScript知道两类定时器:的setInterval和setTimeout的。 setInterval每隔100毫秒触发一次,setTimeOut在前一次触发100毫秒后调用下一个。在调整应用程序时,应该牢记这一行为。你也可以考虑网络工作者,他们真的在单独的线程上工作。他们沟通以消息为基础,这听起来是适合您问题的解决方案。确切的延迟(100毫秒或更长)是您真正需要尝试的。 John Resig的书显示,从21ms(IE9)到1ms(Opera),各种浏览器的实时定时器延时差异很大。
- 1. 使用setTimeout定期进行自动完成AJAX调用?
- 2. 使用的setTimeout与Ajax调用
- 3. 为ajax调用运行setTimeout多次
- 4. 无法使用jQuery进行Ajax调用
- 5. 无法使用jQuery进行Ajax调用
- 6. 使用jquery进行AJAX后调用?
- 7. 使用JQuery进行跨域Ajax调用
- 8. 使用cljs-ajax进行异步调用
- 9. 替代使用setTimeout和AJAX?
- 10. AJAX Webworker使用setTimeout轮询
- 11. 在ASP.NET Web Forms中使用$ .ajax进行ajax调用
- 12. 使用AJAX进行验证
- 13. 使用Ajax进行乘法
- 14. 使用python进行跨域调用并使ajax调用python来读取数据
- 15. 使用setTimeout jQuery递归ajax轮询
- 16. 无法在Codepen.io上进行AJAX调用
- 17. ASP.net与Jquery进行AJAX调用
- 18. 从javascript进行GET调用无WITH ajax
- 19. 与AngularJS进行简单的AJAX调用
- 20. 防止CascadingDropDown进行初始AJAX调用
- 21. 如何调用函数的函数内部进行的setTimeout
- 22. 如何setTimeout调用
- 23. 使用setTimeout调用函数的问题
- 24. 使用AJAX或ASP.NET进行异步调用?
- 25. 使用jQuery进行安全的ajax调用
- 26. 在asp.net中使用jQuery进行AJAX调用mvc
- 27. 使用React和react-router进行ajax调用的最佳实践
- 28. 使用参数进行控制器方法的Ajax调用
- 29. 如何使用cherrypy进行异步ajax调用?
- 30. 在Webforms中使用MVC进行Ajax调用
没有任何问题,但只是确保你的ajax和后端能够发送回应内或小于90milisecond ... – 2013-03-25 06:40:08
我怎么可以确保这一点? – 2013-03-25 06:42:45
使用firebug firefox add就可以显示响应时间和内容......也可以使用yslow firefox addon查看哪个响应延迟... – 2013-03-25 06:43:55