2012-06-24 4 views
1

저는 새로운 기술을 연구하는 위치에 있습니다. 그래서 long polling 노드 node.js에 대해 들었습니다.codeignitor와 node.js를 사용한 긴 폴링

long polling을 사용하는 웹 응용 프로그램을 만들어야합니다.

이 프로젝트의 각 페이지마다 폴링을 사용해야합니다. 실제로 POP를 통해 새 이메일이 있는지 확인합니다.

그래서 나는 새로운 이메일

  • 이 경우 새가 있으면 내가 다음

    1. 전화
    2. 서버가 요청 및 검사를받는 서버에 아약스 요청을 할 필요가 있다고 생각 메일 서버가 세부 정보로 응답합니다.
    3. 새 이메일 서버가없는 경우 언젠가는 잠자기를 시작하고 새 이메일이 도착할 때까지 다시 확인하십시오.

    그래서이

    function check_mail() 
        { 
    
        //processing and checking is there a new mail on inbox 
    
        return $is_mail = $this->_new_mail()?true:false; 
    
        } 
    
        function receiver() 
        { 
        if($check_mail()) 
        { 
        //send to client.. 
        } 
        else 
    
        { 
        //sleep sometime and call mail function 
        } 
    
    } 
    

    등이

    $(document).ready(function(){ 
    
    is_there_new_mail(); 
    
    function is_there_new_mail() 
    { 
    
    $.get(url,function(data){ 
    
    if(data ==true) 
    { 
    //do some actions and call again 
    is_there_new_mail(); 
    } 
    
    
    }); 
    
    
    } 
    
    
    }); 
    

    같은 및 서버 뭔가 내가이 같은 일을하는 서버에 많은 연결을 열고, 우리는 노드를 사용하는 경우 것이라는 점을 들었다. 우리는 하나의 연결로 관리 할 수 ​​있습니다.

    저는 Codeignitor를 사용하고 있으며 node.js.

    codeignitor를 사용하여 node.js를 구현하려면 어떻게해야합니까? 아니면이 시나리오에 대해 나에게 더 제안 해 주시겠습니까?

    미리 감사드립니다.

  • +0

    솔루션에 대한 설명을 통해 긴 폴링을해야하는 각 사용자에 대해 새로운 연결이 열립니다. 실제로 더 좋은 대안은 없습니다. 들어오는 모든 클라이언트 연결을 처리하는 단일 연결을 가질 수 없습니다. –

    +0

    각 요청이 아파치에 대한 새로운 프로세스를 만들 것임을 이해합니다 ... 어떻게이 문제를 해결할 수 있습니까? [죄송합니다, 나는 이것에 대해서만 연구하고 있습니다, 정보가 틀릴 수도 있습니다] – Red

    답변

    3

    node은 하나의 연결에서 모든 요청을 처리하지 않습니다. 노드는 한 번에 많은 수의 동시 연결을 처리 할 수 ​​있습니다. 다른 손에있는 Apache는 node.js와 비교하여 동시 연결 수가 매우 적습니다.

    websocketshttp://socket.io/을 조사하십시오.

    웹 소켓은 클라이언트와 서버 간의 전이중 연결을 허용합니다. HTTP 프로토콜은 각 요청에 대한 연결을 열고 클라이언트가 응답을 받으면 연결이 끝납니다. 웹 소켓을 사용하면 연결을 유지할 수 있습니다.

    서버 쪽에서 nodejs와 websockets를 사용하면 특정 간격으로 서버를 폴링하는 클라이언트와는 달리 소켓을 사용하여 이벤트를 클라이언트에 보낼 수 있습니다.

    이렇게하면 긴 폴링을 방지 할 수 있습니다.

    사례 : nodejs 및 websocket을 사용하기로 결정한 경우 서버에서 들어오는 전자 메일 이벤트를 트리거하고 기존 소켓에 이벤트를 알리는 방법을 찾아야합니다.차이

    1000 사용자가 폴링을 사용하여 앱에 로그인 상상 무슨

    그래서 노드는, 메일을 확인하기 위해 POP를 폴링해야합니다. 각 사용자는 30 초마다 서버를 폴링합니다. 그래서 2000 POP는 초당 투표를합니다.

    nodejs를 사용하면 2POL 폴링이 발생하고 메일이 있으면 소켓에 알리고 클라이언트가 이벤트를 처리합니다.

    하지만 프로젝트의 전반적인 요구 사항을 고려해야합니다. How to decide when to use Node.js?

    +0

    정보를 주셔서 감사합니다 ... 나는 socket.io를 들여다 볼 것입니다. codeignitor를 사용한 예가 있습니까? – Red

    +0

    브롱코, 지금 당황한 종류의 술에 취해서 json 파일에 값을 저장하는 방법, 타임 스탬프가 다른 경우에는 그 파일의 타임 스탬프를 확인하는 방법 ?? – Philip