2017-05-01 1 views
0

우리는이 간단한 코드가 있습니다 :`Express '와`Socket.IO`를 따로 사용해야합니까? 예를 들어

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); 

/가로드되고 socket.io 요청을 통해 누를 start 버튼을 백엔드 무거운 물건에 5 ~ 10이 될 수 서로 다른 HTTP 요청 (많이 시작하는 보냈을 때 초), 응답이 오면 바로 브라우저로 되돌아갑니다.

그래서 주요 질문 : 두 개로 앱을 분할해야합니까? 나는 긴 요청이 올 때 Express을 차단하는 것으로 알고 있어요

초 프로세스로 ExpressSocket.IO 과정 하나

  • 프런트 엔드와

    1. 백엔드. 예를 들어 한 사용자가 다른 사용자를 검색 할 때 사이트가 오래 동안 요청이 진행되는 동안 다운됩니다.

  • 답변

    0

    실제 코드와 클라이언트를 완전히 이해하고 프로파일 링/테스트함으로써 하나 또는 두 가지 프로세스에 대한 확실한 답이 있습니다. node.js 코드 (일반 http 요청 또는 socket.io 요청)가 논 블로킹 I/O를 사용하고 있고 CPU를 많이 사용하지 않는 경우 단일 프로세스로 놀랍도록 많은 수의 요청을 입력 할 수 있습니다. 이것은 node.js 아키텍처의 주요 이점입니다.

    반면에 대부분의 요청의 일부로 CPU 사용량이 많은 계산이있는 경우 전체 앱을 클러스터링 할 수 있습니다. 나는 당신이 socket.io 요청이나 http 요청을 처리 할 수 ​​있도록 여러 CPU를 제공하기 때문에 http에서 socket.io를 분리하여 클러스터링하는 것이 좋습니다.