使用AJAX与套接字.IO socket消息

Using AJAX vs. socket.io socket messages

本文关键字:socket 消息 IO 套接字 AJAX 使用      更新时间:2023-09-26

我正在编写一个具有好友请求功能的聊天应用程序,目前使用套接字。用于在用户之间发送/接收消息的IO事件。

在访问套接字的情况下,我在何时使用AJAX和何时使用套接字方面存在冲突。例如

$.ajax({url:'friendAdd'}) vs socket.emit('friendAdd');

表示我所有的好友请求逻辑。

在整个应用程序中保持一致并对所有其他请求使用套接字会更好吗?还是有理由使用AJAX会更优?

我想说这真的取决于你正在做的每个请求的基础。一旦你有了插座。IO连接建立,从技术上讲,将它用于所有事情更有效,因为连接已经在两端建立,因此您所要做的就是发送消息包。

但是,从客户机到服务器的一些请求(取决于它们是什么)可能受益于一些已经内置到服务器上的HTTP框架中的HTTP基础设施(如Express)。例如,如果要上传文件,可以通过套接字完成。但是有很多代码已经构建好了,可以在HTTP上做这个,你可以直接使用这些代码可能还不存在,可以在socket。io上做这种类型的请求。或者,如果您正在使用各种Express中间件进行会话、cookie、身份验证、路由等…利用HTTP世界中所有现有的基础设施和模块可能比尝试为套接字重新实现要容易得多。io消息。

我个人倾向于保留套接字。io流量只与聊天相关的流量,显然任何必须是服务器推送的东西,然后使用常规的Ajax调用其他不直接聊天的功能。但是,没有确切的答案,这真的取决于你认为什么是最干净的架构和最好的功能封装。

供参考,关于这个主题的一些有趣的讨论(和其他参考)在另一个答案中:Ajax vs Socket.io