За последние 24 часа нас посетили 19134 программиста и 1642 робота. Сейчас ищут 853 программиста ...

Как лучше реализовать подключеня к удаленному серверу?

Тема в разделе "JavaScript и AJAX", создана пользователем Mihail_, 6 мар 2012.

  1. Mihail_

    Mihail_ Активный пользователь

    С нами с:
    26 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте, подскажите пожалуйста как лучше реализовать клиент-серверное приложение по удаленному мониторингу и контролю некоторых устройств

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

    Устройства подключаются через интернет к серверу, на котором запущен веб-интерфейс. Время от времени на сайт заходит оператор, смотрит состояние устройств и если нужно - отправляет команду. Нужно чтобы с момента отправки команды оператором она выполнялась на выбранном устройстве с минимальной задержкой (максимум пара секунд), но при этом чтобы целевое устройство не расходовало слишком много трафика, постоянно отправляя что-то на сервер. Оперативность нужна только в момент захода оператора на сайт, в остальное время достаточно просто отсылать свой статус раз в 10-15 минут.

    Как бы вы подошли к реализации такой задачи? Возможно ли использовать веб-сервер в качестве серверного приложения? Это нужно все время открытое соединение держать (что будет с апачем от нескольких сотен постоянно открытых соединений?) или еще как-нибудь можно?

    Заранее спасибо за ваши ответы!
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это и есть серверное приложение

    устройства понимают SNMP? тогда пусть сервер по крону их опрашивает. а когда оператор залогинен - тем же SNMP отправлять команды.
     
  3. Mihail_

    Mihail_ Активный пользователь

    С нами с:
    26 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    это получится что раз в несколько секунд сервер по крону должен опросить пару сотен клиентов? а оно не накроется?

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

    я пока вижу только 2 решения:

    1. все устройства раз в несколько секунд флудят на сервер что-то вроде "нет ли для меня новых команд?"
    2. все устройства постоянно держат открытую TCP-сессию до сервера и по ней получают команды и передают свое состояние

    Возможны ли еще варианты?

    -
    В случае с TCP соединением, можно ли использовать в качестве серверного приложения какой-нибудь apache+php, чтобы не писать свое приложение с кучей сокетов? Переварит ли апач одновременные несколько сотен подключений и какую технологию надо будет использовать (там же везде таймауты, не получится часами какой-нибудь http запрос держать)?
     
  4. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Ищем(пишем) неблокируемый сервер и чопаем в нем лонгполлинг.