Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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或Socket.IO在我的情况下更有意义吗?_Javascript_Ajax_Node.js - Fatal编程技术网

Javascript AJAX或Socket.IO在我的情况下更有意义吗?

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

我一直在使用AJAX做一些事情,有时候每秒需要几篇文章。每次发布都会返回一个JSON对象(由发布到的PHP文件生成,~11000字节),平均延迟在30毫秒到250毫秒之间,具体取决于我是使用wifi还是有线连接,但每大约1/15次调用,它的峰值会达到大约4000毫秒。我正试图找到一种解决方法,目前我看到两种选择:

  • 在AJAX调用上抛出一个超时,并让它调用一个GET-on-fail(POST仍然应该通过,总是超时的是回程),或者

  • 简化整个过程,学习node.js,这样我就可以使用WebSocket来潜在地纠正这个问题

  • 据我所知,这两种解决方案都是基于原始调用失败的原因。如果AJAX调用有问题,那么可能需要一个新的GET来解决这个问题。但是如果是服务器本身的问题,那么逻辑上GET也会超时,这是服务器的问题,我死在水里了

    因为我对WebSocket还没有任何经验,所以我希望能得到一些关于下一步最佳行动的反馈。谢谢你的意见


    如果有帮助的话,我很可能通过一些巧妙的编码将返回的有效负载减少到1/15大小。这会产生影响吗?

    WebSocket是一个不错的选择!事实上,使用它非常简单,学习曲线也很浅

    • 由于连接保持打开状态,您的请求跳过DNS查找和路由以降低延迟。这意味着您提出的每个POST请求的开销要低得多
    • 如果你曾经考虑过向用户推送数据,那么WebSockets实际上就是这样做的。Ajax轮询已经过时了
    也就是说,您必须将后端逻辑移植到JavaScript。您必须将部署策略更改为支持节点应用程序的服务器。你将不得不学习一个新的环境——也可能会有一些开销

    在探索节点之前,请考虑上面的缺点。我认为这是一项伟大的技术,但我也会研究以下方法,特别是如果你时间紧迫的话

    • 1/15的尺寸缩减是完全值得的。事实上,在这两种情况下都是值得的
    • 您可以对来自客户端的POST请求进行任何类型的批处理吗?如果后续请求依赖于前一个POST请求的结果,则无法执行此操作。在这种情况下,我强烈建议使用WebSocket
    总而言之,总有权衡。如果您没有时间紧迫,考虑到Node、SocketIO和whirl,它们正在成为非常流行的web技术,值得学习

    简化整个过程,学习node.js,这样我就可以使用WebSocket来潜在地纠正这个问题

    用错误的工具做事是没有意义的。如果您需要实时通信,请使用支持即时通信的服务器,如
    node.js
    (可能是从PHP获得的最简单的方法)

    因为我还没有使用WebSocket的经验


    在原始WebSocket上获得一些框架,比如or和good luck;)

    你也可以,它们不限于node.js。我不会做GET的事情。。。如果您在服务器有机会处理帖子之前收到邮件,会发生什么情况?如果网络状况良好(并且浏览器没有问题),那么您的服务器一定有问题。调查。谢谢,在这种情况下批处理我的帖子是不可能的。不幸的是,我将做一些测试来判断减少的支出对事情的影响程度,并进一步研究WebSocket。是否存在服务器运行节点所需的任何预请求?或者这是我很容易得到的东西?是的,如果你在Linux上,你可以!