使用 AJAX 与 socket.io 套接字消息
Using AJAX vs. socket.io socket messages
我正在编写一个具有好友请求功能的聊天应用程序,目前使用 socket.io 事件来 send/receive 用户之间的消息。
我在何时使用 AJAX 以及在我有权访问套接字的情况下何时使用套接字之间存在冲突。即
$.ajax({url:'friendAdd'}) vs socket.emit('friendAdd');
我所有的好友请求逻辑。
在整个应用程序中保持一致并为所有其他请求使用套接字会更好吗?还是有理由使用 AJAX 会更优化?
我会说这真的取决于你在做什么的请求基础上的请求。一旦你建立了 socket.io 连接,从技术上讲,将它用于所有事情会更有效率,因为连接已经在两端建立,所以你所要做的就是发送一个消息包。
但是,从客户端到服务器的一些请求(取决于它们是什么)可能会受益于一些已经内置到服务器上的 HTTP 框架中的 HTTP 基础结构(如 Express)。例如,如果您正在上传一个文件,您可以通过 socket.io 连接进行上传,但是已经构建了很多代码来通过 HTTP 进行上传,您可以直接使用这些代码,但这些代码可能尚不存在socket.io 的请求类型。或者,如果您正在使用各种 Express 中间件进行会话、cookie、身份验证、路由等......利用 http 世界中所有现有的基础设施和模块可能比尝试重新实现要容易得多 socket.io 消息。
就个人而言,我倾向于将 socket.io 流量保留为仅与聊天相关的流量,显然任何必须是服务器推送的流量,然后使用常规 Ajax 调用其他非直接的功能聊天。但是,那里没有确切的答案,这实际上取决于您认为什么是最干净的架构和最好的功能封装。
仅供参考,在另一个答案中围绕此主题进行了一些有趣的讨论(和其他参考):
我正在编写一个具有好友请求功能的聊天应用程序,目前使用 socket.io 事件来 send/receive 用户之间的消息。
我在何时使用 AJAX 以及在我有权访问套接字的情况下何时使用套接字之间存在冲突。即
$.ajax({url:'friendAdd'}) vs socket.emit('friendAdd');
我所有的好友请求逻辑。
在整个应用程序中保持一致并为所有其他请求使用套接字会更好吗?还是有理由使用 AJAX 会更优化?
我会说这真的取决于你在做什么的请求基础上的请求。一旦你建立了 socket.io 连接,从技术上讲,将它用于所有事情会更有效率,因为连接已经在两端建立,所以你所要做的就是发送一个消息包。
但是,从客户端到服务器的一些请求(取决于它们是什么)可能会受益于一些已经内置到服务器上的 HTTP 框架中的 HTTP 基础结构(如 Express)。例如,如果您正在上传一个文件,您可以通过 socket.io 连接进行上传,但是已经构建了很多代码来通过 HTTP 进行上传,您可以直接使用这些代码,但这些代码可能尚不存在socket.io 的请求类型。或者,如果您正在使用各种 Express 中间件进行会话、cookie、身份验证、路由等......利用 http 世界中所有现有的基础设施和模块可能比尝试重新实现要容易得多 socket.io 消息。
就个人而言,我倾向于将 socket.io 流量保留为仅与聊天相关的流量,显然任何必须是服务器推送的流量,然后使用常规 Ajax 调用其他非直接的功能聊天。但是,那里没有确切的答案,这实际上取决于您认为什么是最干净的架构和最好的功能封装。
仅供参考,在另一个答案中围绕此主题进行了一些有趣的讨论(和其他参考):