例如,我们有这个简单的代码:
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秒)当响应到来时,它会立即返回浏览器。
所以主要问题是:我应该将应用分成两部分吗?
Socket.IO
作为一个流程Express
作为第二个流程我知道当长请求到来时,它会阻止Express
。例如,当一个用户搜索其他用户时,在长请求正在进行时,网站将会关闭。
答案 0 :(得分:0)
通过完全理解并可能分析/测试您的实际代码和客户端,只有一个与两个流程的确定答案。如果您的node.js代码(无论是常规的http请求还是socket.io请求)正确使用非阻塞I / O并且不是CPU密集型,那么您可以使用单个进程来填充数量惊人的请求。这是node.js架构的主要优点。
另一方面,如果您在大多数请求中都有大量CPU密集型计算,那么您可能确实希望对整个应用程序进行集群。我建议从http中拆分socket.io进行群集,因为这会让你有多个CPU来处理你的socket.io请求或你的http请求。