NowJS вручную инициирует новое соединение после потери соединения

у меня есть случай, когда клиенты подключаются к серверу node.js, на котором работает nowjs, и остаются подключенными в течение довольно долгого времени (около 30 минут). в некоторых браузерах соединение через некоторое время обрывается и клиент отключается.

я реализовал обработчик отключения на стороне клиента следующим образом:

now.core.on('disconnect', function () {
    // we should reconnect here, maybe after a short timeout
});

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

сценарий now.js инициализируется при загрузке страницы, и после этого я могу использовать объект now, но я не могу понять, как повторить этот процесс без перезагрузки страницы.

Благодарность!


person DasAntonym    schedule 20.06.2011    source источник
comment
Парни из socket.io (v0.7, которой уже неделю) играют с автоматическими повторными подключениями. Спросите у #socket.io и #nowjs, каковы планы на будущее в отношении автоматических переподключений. (Кстати, это IRC на freenode)   -  person Raynos    schedule 20.06.2011
comment
спасибо за подсказку! я думаю, что это уже делает свое дело, так как я только что настроил новый сервер с nowjs на нем, установил точно такое же приложение, и оно теряет соединение, но, кажется, восстанавливает его самостоятельно?!?   -  person DasAntonym    schedule 20.06.2011
comment
В socket.io уже есть возможность переподключения, почему бы не использовать ее?   -  person davin    schedule 20.06.2011
comment
ок, одно отличие, я попробовал вызвать now.core.reconnect(); у меня вылетает, клиент переподключается. но я также получил одно повторное подключение, это не ошибка функции ... так это функция now.core или нет? может тут кто знает точно.   -  person DasAntonym    schedule 20.06.2011
comment
На их сайте написано, что в текущей версии NowJS автоматические повторные подключения не полностью поддерживаются. Очень плохо.   -  person davin    schedule 20.06.2011
comment
@davin: вы правы, но у меня нет глубоких знаний ни о том, ни о now.js, ни о socket.io. поэтому, поскольку now.js находится поверх socket.io, я понятия не имею, где что использовать. так что, возможно, now.core.reconnect(); функция переподключения socket.io?   -  person DasAntonym    schedule 20.06.2011
comment
Если вы используете now.js и они не поддерживают повторное подключение, у вас небольшие проблемы. Даже если вы заставите базовый сокет выполнять свою собственную логику повторного подключения, вы можете испортить инварианты now.js. Либо работайте с командой now.js, чтобы добавить эту поддержку, либо забудьте о повторном подключении, либо откажитесь от now.js. Не уверен, что есть другие варианты.   -  person davin    schedule 20.06.2011
comment
Я должен добавить, что я не очень хорошо знаком с now.js, поэтому вам, вероятно, следует спросить кого-нибудь из их команды, как предложил Рейнос.   -  person davin    schedule 20.06.2011
comment
За последние недели Socket.io претерпел значительные изменения. Команда nowjs интегрирует это в сборку. Я знаю, что ребята из socket.io исправляют ошибки в автоматическом переподключении, и, как вы сказали, вам следует поговорить с nowjs в ETA о новых функциях socket.io, которые есть в сборке nowjs. Однако вы можете сделать множество исправлений обезьяны, чтобы сделать это, поддержка просто не будет готовой.   -  person Raynos    schedule 20.06.2011
comment
@davin @DasAntonym dnode — это еще одна абстракция на socket.io, которую стоит использовать. Спросите SubStack на #nowjs о различиях в поддержке автоматического переподключения в dnode/nowjs/socket.io   -  person Raynos    schedule 20.06.2011


Ответы (2)


Да, автоматическое переподключение поддерживается NowJS, начиная с версии 0.6.1.

Веб-сайт нуждается в обновлении, но есть сообщение в блоге, подробно описывающее реализацию переподключений в NowJS здесь.

person Darshan Shankar    schedule 20.06.2011
comment
Я прослежу, чтобы мы сделали это, Рейнос! Спасибо :) - person Darshan Shankar; 20.06.2011

Документация на сайте немного устарела — начиная с версии 0.6.1 (выпущена 10 июня; текущая версия на npm) поддерживаются автоматические переподключения. В основном он просто использует функцию автоматического повторного подключения в Socket.IO v0.6.18, хотя нужно было сделать несколько других разных настроек (очевидно, об этом есть сообщение в блоге по адресу blog.nowjs.com).

person Steve Wang    schedule 20.06.2011