Javascript AJAX或Socket.IO在我的情况下更有意义吗?
我一直在使用AJAX做一些事情,有时候每秒需要几篇文章。每次发布都会返回一个JSON对象(由发布到的PHP文件生成,~11000字节),平均延迟在30毫秒到250毫秒之间,具体取决于我是使用wifi还是有线连接,但每大约1/15次调用,它的峰值会达到大约4000毫秒。我正试图找到一种解决方法,目前我看到两种选择:Javascript AJAX或Socket.IO在我的情况下更有意义吗?,javascript,ajax,node.js,Javascript,Ajax,Node.js,我一直在使用AJAX做一些事情,有时候每秒需要几篇文章。每次发布都会返回一个JSON对象(由发布到的PHP文件生成,~11000字节),平均延迟在30毫秒到250毫秒之间,具体取决于我是使用wifi还是有线连接,但每大约1/15次调用,它的峰值会达到大约4000毫秒。我正试图找到一种解决方法,目前我看到两种选择: 在AJAX调用上抛出一个超时,并让它调用一个GET-on-fail(POST仍然应该通过,总是超时的是回程),或者 简化整个过程,学习node.js,这样我就可以使用WebSocket
如果有帮助的话,我很可能通过一些巧妙的编码将返回的有效负载减少到1/15大小。这会产生影响吗?WebSocket是一个不错的选择!事实上,使用它非常简单,学习曲线也很浅
- 由于连接保持打开状态,您的请求跳过DNS查找和路由以降低延迟。这意味着您提出的每个POST请求的开销要低得多
- 如果你曾经考虑过向用户推送数据,那么WebSockets实际上就是这样做的。Ajax轮询已经过时了
在探索节点之前,请考虑上面的缺点。我认为这是一项伟大的技术,但我也会研究以下方法,特别是如果你时间紧迫的话
- 1/15的尺寸缩减是完全值得的。事实上,在这两种情况下都是值得的
- 您可以对来自客户端的POST请求进行任何类型的批处理吗?如果后续请求依赖于前一个POST请求的结果,则无法执行此操作。在这种情况下,我强烈建议使用WebSocket
node.js
(可能是从PHP获得的最简单的方法)
因为我还没有使用WebSocket的经验
在原始WebSocket上获得一些框架,比如or和good luck;) 你也可以,它们不限于node.js。我不会做GET的事情。。。如果您在服务器有机会处理帖子之前收到邮件,会发生什么情况?如果网络状况良好(并且浏览器没有问题),那么您的服务器一定有问题。调查。谢谢,在这种情况下批处理我的帖子是不可能的。不幸的是,我将做一些测试来判断减少的支出对事情的影响程度,并进一步研究WebSocket。是否存在服务器运行节点所需的任何预请求?或者这是我很容易得到的东西?是的,如果你在Linux上,你可以!