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

时间:2015-10-10 20:08:23

标签: javascript ajax socket.io

我正在编写一个具有好友请求功能的聊天应用程序,并且当前正在使用socket.io事件在用户之间发送/接收消息。

我对何时使用AJAX以及何时在我有权访问套接字时使用套接字感到矛盾。即。

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

为我所有的朋友请求逻辑。

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

1 个答案:

答案 0 :(得分:2)

我说这实际上取决于请求基础上你正在做什么。一旦建立了socket.io连接,从技术上讲,将它用于所有内容的效率要高一些,因为已经在两端建立了连接,所以你所要做的就是发送一个消息包。

但是,从客户端到服务器的某些请求(取决于它们是什么)可能会受益于服务器上已构建到HTTP框架中的某些HTTP基础结构(如Express)。例如,如果你正在上传一个文件,你可以通过socket.io连接来完成,但是已经有很多代码可以通过HTTP来构建,你可以使用它,而且可能不存在这样做请求socket.io。或者,如果您使用各种Express中间件进行会话,cookie,身份验证,路由等等......可以更轻松地利用http世界中现有的所有基础架构和模块,而不是尝试重新实现socket.io消息。

就个人而言,我倾向于保持socket.io流量只与聊天相关的流量,显然任何必须服务器推送的东西,然后使用常规Ajax调用其他不直接聊天的功能。但是,那里没有确切的答案,它实际上取决于您认为最干净的架构和功能的最佳封装。

仅供参考,在另一个答案中围绕此主题进行了一些有趣的讨论(以及其他参考):Ajax vs Socket.io