Использовать node.js для событийных обновлений в Django? - PullRequest
5 голосов
/ 24 января 2011

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

У меня есть своего рода «лента новостей», и я бы хотел, чтобы этот канал обновлялся при поступлении новых элементов. Общая идея, которую я имею, - просто открыть соединение с сервером узла через javascript, иметь узел Сервер «спит», пока не появится новый элемент, после чего он возвращает данные, и сторона Django устанавливает другое соединение.

Моя путаница возникает в том, что касается написания кода для node.js - документация показывает много информации, но не то, как ее использовать. Я был бы признателен, если бы кто-то мог указать мне, где искать это - я использую что-то вроде EventEmitter? Как получить сценарий на стороне Django, чтобы сервер узлов прослушивал только события, относящиеся к конкретному пользователю?

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

Ответы [ 2 ]

7 голосов
/ 24 января 2011

Неважно, думаю, я понял это.Я создал свой собственный излучатель, и он прослушивал мои собственные события.

var myemitter = new events.EventEmitter();

И когда поступил запрос от Джанго,

myemitter.addListener('action'+userid,function(data){
    //do something with data
}

Этот запрос будет проходить через $.ajax()Позвоните через JavaScript, который по сути долго опрашивать и ждать, пока что-то произойдет.Когда что-то происходит на сервере, то есть пользователь что-то делает, сервер отправляет сообщение на узел.Запрос приведет к отправке события:

myemitter.emit('action'+userid,data);

..., что вызывает функцию обратного вызова из второго фрагмента кода.Затем он находит объект ответа, связанный с этим запросом, возвращает информацию и анализируется сценарием на стороне Django.

Надеюсь, это кому-нибудь поможет, подумал, что я просто опубликую свой ответ.

2 голосов
/ 24 января 2011

Если вам неудобно писать код для node.js, вам следует взглянуть на серверы на основе Python, которые специально созданы для поддержки длительных HTTP-запросов.

Торнадо является одним из них, и вы можете запустить Джанго внутри него (например, http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/). Использование ЦП и памяти может быть не таким звездным, как для node.js, но это определенно стоит посмотреть!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...