2012-06-24 2 views
1

Я в состоянии исследовать новые технологии, поэтому я услышал что-то о длинном опросе, node.js.Длинный опрос с codeignitor и node.js

Мне нужно создать веб-приложение, которое использует long polling.

На каждой странице этого проекта мне нужно использовать опрос, на самом деле он проверяет, есть ли новый адрес электронной почты через POP.

Так я думаю, что мне нужно сделать следующий

  1. Позвоните в Ajax запрос на сервер
  2. Сервер получает запрос и проверяет, есть ли новая почта
  3. Если есть новый Почтовый сервер отвечает своими подробностями
  4. Если новый сервер электронной почты не начал спать когда-то и снова проверяется до тех пор, пока не появится новая электронная почта.

так что-то вроде этого

$(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(); 
} 


}); 


} 


}); 

и в серверном что-то вроде этого

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 
    } 

} 

Я слышал, что делать что-то вроде этого откроется много соединение на сервере, и если мы будем использовать узел. js мы можем управлять им в одном соединении.

Я использую Codeignitor и действительно новичок в node.js.

Как я могу реализовать node.js с codeignitor, или вы могли бы предложить мне что-то большее об этом сценарии.

Заранее спасибо.

+0

С помощью вашего объяснения вашего решения он откроет новое соединение для каждого пользователя, которому требуется длительный опрос. Нет лучшей альтернативы, у вас не может быть одного подключения, которое обрабатывает все входящие клиентские подключения. –

+0

Я понимаю, что каждый запрос сделает новый процесс на apache ... как я могу избавиться от этого? [Прошу прощения, я просто разбираюсь в этом, информация может быть неверной] – Red

ответ

3

Его не так, что node будет обрабатывать все запросы в одном соединении. Узел может обрабатывать большое количество одновременных соединений за раз, где Apache в других руках может обрабатывать очень мало параллельных подключений по сравнению с node.js

Посмотрите на websocketshttp://socket.io/.

Websockets позволяет осуществлять полнодуплексное соединение между клиентом и сервером. Протокол HTTP открывает соединение для каждого запроса, и соединение заканчивается после того, как клиент получает ответ. Websockets позволяет нам поддерживать соединение открытым.

Если вы используете nodejs и websockets в конце сервера, вы можете вызывать события с помощью сокетов для клиентов, в отличие от клиентов, опрошенных сервером через определенные промежутки времени.

Таким образом, это избавит вас от долгого опроса.

В вашем случае: Если вы решите использовать nodejs и websocket, вам нужно будет найти способ запуска входящего события электронной почты на сервере и уведомления о существующих сокетах о событии.

Так узел также будет необходимо опрашивать POP, чтобы проверить почту, Что разница

Представьте себе 1000 пользователей вошли в приложение с помощью опроса. Каждый пользователь будет опросить сервер каждые 30 секунд. Таким образом, 2000 опросов POP в секунду.

Использование nodejs, 2 опроса POP второй, и если есть почта, сообщите о сокетах, и клиенты обработают событие.

Но вы должны действительно учитывать общие требования вашего проекта. How to decide when to use Node.js?

+0

Спасибо за информацию ... я буду смотреть в socket.io .. есть ли какой-нибудь пример с codeignitor? – Red

+0

+1 bronco, im вид опьянения прямо сейчас, но как насчет сохранения ваших значений в json-файле, а затем проверить отметку времени этого файла, если временная метка отличается отправкой нового запроса? – Philip

Смежные вопросы