Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 如何混合使用Socket.io和AJAX_Javascript_Ajax_Node.js_Socket.io - Fatal编程技术网

Javascript 如何混合使用Socket.io和AJAX

Javascript 如何混合使用Socket.io和AJAX,javascript,ajax,node.js,socket.io,Javascript,Ajax,Node.js,Socket.io,我开发了一个web应用程序,需要Socket.io向用户推送通知。鉴于此,最好使用Socket.io进行客户端和服务器之间的所有通信,还是使用普通AJAX调用进行不需要Socket的所有通信 谢谢 没有正确的答案。如果您已经有了一个实时webSocket连接,并且您知道您将拥有该连接,那么让客户端通过该webSocket发送消息以请求数据是完全可以接受的 无论您是使用webSocket还是使用HTTPAjax请求,在客户端和服务器上都更容易实现这一点 webSocket请求“应该”更高效一些,因

我开发了一个web应用程序,需要Socket.io向用户推送通知。鉴于此,最好使用Socket.io进行客户端和服务器之间的所有通信,还是使用普通AJAX调用进行不需要Socket的所有通信


谢谢

没有正确的答案。如果您已经有了一个实时webSocket连接,并且您知道您将拥有该连接,那么让客户端通过该webSocket发送消息以请求数据是完全可以接受的

无论您是使用webSocket还是使用HTTPAjax请求,在客户端和服务器上都更容易实现这一点

webSocket请求“应该”更高效一些,因为套接字已经打开并连接(因此可以避免HTTP调用的套接字设置开销)。而且,如果您在https上运行,那么它会有更多的设置开销。但是,在服务器上有许多有用的基础设施用于处理HTTP请求(会话、模板、大量中间件、调试工具、代理等),这些基础设施可能更容易用于AJAX调用。而且,当webSocket尚未打开时,Ajax调用也可以用作API)


这两个方向都有利弊,因此它实际上取决于请求的类型、用于满足请求的工具以及您自己的喜好。

socketIO的独特之处在于即时通知。通常,http交互由于其req/res模型(而不仅仅是一堆事件),更易于调试、更安全、更日志化,并且更易于在后端实现。简言之,这两种方法都有效,但如果您不需要突然出现的数据,ajax有更多的工具/好处。但是考虑到我必须使用Socket.io进行一些通信,我是否应该对所有这些工具/好处都使用它?还是混合使用更好?我认为你应该使用最好的工具来完成这项工作。我喜欢使用插座来计时和一些轻松的消息传递,如果这样可以节省一两次行程的话。但对于重要的事情,我更喜欢通过WebSocket让客户机知道,是时候通过ajax获取一些东西了。为什么?因为ajax具有更好的安全性和日志记录能力,并且在以自定义方式处理响应方面给了我很大的灵活性,而无需另一个全局套接字侦听器…@dandavis-ajax如何更安全?@jfriend00:ajax调用使用我们的页面已经具有的登录身份验证。它们也可以在页面加载后被有条件地重定向,而套接字会被卡在“相同的url”上。从理论上讲,http没有什么本质上更安全的,但对我们来说,我想大多数商店,http有更多的动力和现有的工具,可以通过套接字传递,需要更多的自定义代码。例如,如果我想删除一个用户帐户,那么通过http这样做可以提供比我们的socket服务器软件更好的审计跟踪。你也知道阿贾克斯做到了,然后又回来了。。。