我应该单独使用`Express`和`Socket.IO`吗?

时间:2017-05-01 20:27:31

标签: node.js express socket.io load-balancing

例如,我们有这个简单的代码:

var http = require('http');
var express = require('express');
var app = express();

var server = http.createServer(app);
var io = require('socket.io').listen(server);

server.listen(80);

加载/并通过发送的start请求按下socket.io按钮后,这些请求从后端繁重的东西开始(许多不同的http请求可能是5到10秒)当响应到来时,它会立即返回浏览器。

所以主要问题是:我应该将应用分成两部分吗?

  1. 后端以Socket.IO作为一个流程
  2. 前端以Express作为第二个流程
  3. 我知道当长请求到来时,它会阻止Express。例如,当一个用户搜索其他用户时,在长请求正在进行时,网站将会关闭。

1 个答案:

答案 0 :(得分:0)

通过完全理解并可能分析/测试您的实际代码和客户端,只有一个与两个流程的确定答案。如果您的node.js代码(无论是常规的http请求还是socket.io请求)正确使用非阻塞I / O并且不是CPU密集型,那么您可以使用单个进程来填充数量惊人的请求。这是node.js架构的主要优点。

另一方面,如果您在大多数请求中都有大量CPU密集型计算,那么您可能确实希望对整个应用程序进行集群。我建议从http中拆分socket.io进行群集,因为这会让你有多个CPU来处理你的socket.io请求或你的http请求。