Передача данных прервана по инициативе принимающей стороны

Содержание

  1. 1. Настройки криптографии
  2. 2. Получение ИД и работа с приглашениями
  3. 3. Формирование и отправка ЭД
  4. 4. Получение и обработка ЭД
  5. Ответы
  6. 1. Настройки криптографии
  7. 2. Получение ИД и работа с приглашениями
  8. 3. Формирование и отправка ЭД
  9. 4. Получение и обработка ЭД
  10. Что такое COMET ?
  11. Способы реализации
  12. По сообщению на запрос
  13. Поток сообщений через постоянное соединение
  14. Основные способы поддержания постоянного соединения:
  15. Общие для постоянных соединений проблемы
  16. COMET: частый опрос VS постоянное соединение
  17. Классическая(transport-independant) модель COMET
Portaman
06.11.2013 06:40
Прочитано: 5678
Добрый день, не могли бы вы помочь решить проблему с зависанием сервера приложений?
В прошлом месяцу купили 1С, установлено: сервер предприятия 8.3.3.641, в компании работает сервер приложений x64 + Apache 2.2 + SQL сервер 2005.
Все службы запускаются от имени доменного администратора.
На сервере работают внешние клиенты на тонком клиенте на данный момент порядка 40-50 человек, без каких либо видимых причин в разные промежутки времени (может один раз в день, или по 2-3 раза) у клиентов пропадает возможность подключения к серверу, текущие соединения тоже разрываются, при попытке подключения до появления окна логина и пароля выходит сообщение, что «Соединение с сервером было разорвано по инициативе сервера», не помогает даже перезапуск службы сервера, при перезапуске службы она сначала стартует но спустя 1-2 минуты останавливается, помогает только перезагрузка всего сервера.

Посоветуйте пожалуйста что можно предпринять или как выяснить причину происходящего.
Спасибо.

Yandex
Возможно, вас также заинтересует
Jonsony
06.11.2013 09:24
Ответ № 1
ну так и смотрите что сервер делает в это время, через консоль сервера

и не плохо бы конфигурацию указывать

Portaman
06.11.2013 11:57
Ответ № 2
Управление страховой компанией редакция 1.0, 2010
Portaman
06.11.2013 12:00
Ответ № 3
где смотреть то? через консоль сервера вижу сеансы как на глазах таят в момент сбоя и все, где и что смотреть? вроде как нашел информацию что возможно это ограничение на количество подключений тонкого клиента. в 1С вроде как говорят что типа у нас не базовая конфигурация — поэтому. проблема в коде. заказывайте ревизию кода.бред какой то.
Jonsony
06.11.2013 14:21
Ответ № 4
(3) Portaman, было бы ограничение, тупо не пускало бы
а тут требует рестарта всей системы, вот код конфы тут точно ни каким боком
максимум платформы

что журнал событий кажет? (не виндовый)

PS
а почему именно 8.3 поставили? а не 8.2

и плюс ко всему последний релиз 8.3.3.721, скоро 8.3.4 будет (в тесте уже 8.3.4.317)

1. Настройки криптографии

2. Получение ИД и работа с приглашениями

3. Формирование и отправка ЭД

Ошибка проверки данных XDTO:

Структура объекта ‘/Документ/Подписант/ЮЛ/ФИО’ не соответствует типу: ФИОТип

Проверка свойства ‘Фамилия’:

Отсутствует обязательное свойство

Ошибка проверки данных XDTO:
Структура объекта ‘/Документ/СвСчФакт/ГрузОт/ГрузОтпр/Адрес/АдрИно’ не соответствует типу: АдрИноТип
Проверка свойства ‘КодСтр’:
форма: Атрибут
имя: КодСтр
тип: ОКСМТип
Отсутствует обязательное свойство

4. Получение и обработка ЭД

Ответы

1. Настройки криптографии

1.1. При выполнении криптооперации возникают ошибки вида: «Ошибка при получении контекста модуля криптографии»

Не установлены средства криптографии в ОС, в «1С:Предприятии» не указаны алгоритмы криптографии, неправильный выбор криптопровайдера

Установить криптосредство в ОС.

Запустить «1С:Предприятие» и задать общие настройки криптографии, указать используемые алгоритмы.

В последней версии возможно формирование списка из установленных криптопровайдеров в ОС и автоматическое предзаполнение после указания провайдера из списка доступных

Для УЦ, которому принадлежит сертификат ЭЦП, не установлен список отозванных сертификатов, и данный сервис недоступен для этого УЦ через веб-ресурс

Запросить список отозванных сертификатов у УЦ, где получен личный сертификат подписи, и установить этот список в ОС (файл с расширением CRL).

Данный список будет иметь ограниченный срок действия, и его необходимо время от времени обновлять, в большей степени это относится к тестовым УЦ

1.3. При попытке авторизации на сервере «Такском» возникают ошибки вида: « Ошибка работы с Интернет: внутренняя ошибка сервера (500)»

Версия платформы «1С:Предприятие 8» ниже требуемой – 8.2.15.301

Установить версию 8.2.15.301 или выше платформы «1С:Предприятие 8.2»

1.4. При выполнении криптооперации возникают ошибки вида: «Код ошибки 102. Сертификат недействителен. Цепочка сертификатов обработана, но прервана на корневом сертификате, который не является доверенным»

Корневой сертификат УЦ, которому принадлежит личный сертификат, не включен в список доверенных в ОС

Установить корневой сертификат УЦ в ОС, при необходимости вручную указать место, куда установить – «Доверенные корневые центры сертификации»

1.5. При попытке авторизации на сервере «Такском» возникают ошибки вида: « Ошибка работы с Интернет: доступ запрещен (403)»

Сертификат, указанный в Соглашении, по которому проходит авторизация, не зарегистрирован в сервисе «1С-Такском», или не соблюдаются настройки криптографии для клиент-серверного варианта работы информационной базы

В соглашении по обмену указать тот сертификат ЭЦП, который подавался при регистрации участника обмена при получении уникального ИД.

Проверить работоспособность сертификата ЭЦП (для сертификатов КриптоПро), по которому выполняется попытка авторизации, можно, зайдя на ресурс https://1c.taxcom.ru/ через Internet Explorer. Должен открыться личный кабинет на ресурсе «1С-Такском».

Если личный кабинет открывается, проверить пошаговую настройку криптографии на стороне сервера «1С:Предприятия» согласно инструкции для клиент-серверного варианта работы, т. к. авторизация на сервере «Такском» выполняется по сертификату ЭЦП на стороне сервера «1С:Предприятия»

1.6. При выполнении криптооперации возникают ошибки вида: «Сертификат, связанный с закрытой частью ключа, указывает на модуль криптографии, отличный от текущего…»

Отличаются типы криптопровайдера, заданные в настройках информационной базы и указанные в сертификате ЭЦП (назначаются в момент выпуска сертификата УЦ).

Данные по наиболее распространенным криптопровайдерам, сертифицированные ФСБ:

  • КриптоПро CSP:"Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider" (тип 75),
  • Signal-COM CSP: "Signal-COM CPGOST Cryptographic Provider" (тип 75),
  • ViPNet CSP: "Infotecs Cryptographic Service Provider" (тип 2)

Привести типы криптопровайдера к одному значению:

  • либо указать правильный тип в общих настройках криптографии информационной базы;
  • либо переустановить личный сертификат ЭЦП, если он содержал при выпуске правильный тип (для КриптоПро необходимо переустанавливать через оснастку КриптоПРО CSP, установка личного сертификата).

Получить полную информацию по сертификатам подписи можно командой "certmgr.exe -s my" (сама утилита certmgr.exe, например, входит в комплект Visual Studio)

1.2. При выполнении криптооперации возникают ошибки вида: «Не удалось проверить сертификат в списке отозванных, т. к. соответствующий сервер находится в состоянии offline»
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:

Читайте также:Совмещение руководителем других должностей в одной организации

Конфликт настроек криптопровайдера в ОС

Внести изменения в настройку криптосредства в ОС:

  1. Отключить механизм Winlogon (в КриптоПро CSP задать параметр "Отключить КриптоПро Winlogon" = Истина).
  2. Убрать регистрацию носителей ключей в Winlogon (Calais) (отключить службу «Распространение сертификатов» или в свойствах соответствующих носителей в Оборудовании(КриптоПро CSP) снять галку об использовании при входе в ОС)
1.7. Используется КриптоПро CSP 3.6, изредка «слетает» тип криптопровайдера у сертификата ЭЦП. После переустановки личного сертификата через оснастку КриптоПРО CSP все начинает работать
Возможная причина:
Способ устранения:

1.8. При выполнении криптооперации возникают ошибки вида: «…указан неправильный пароль доступа к закрытому ключу, сертификат не связан с закрытым ключом и др.».

Ошибка при вызове метода контекста (Расшифровать): Ошибка интерфейса модуля криптографии. Модуль криптографии не может выполнить требуемое действие, т. к. контекст был получен в ограниченном режиме .

Ошибка при вызове метода контекста (Расшифровать): Ошибка интерфейса модуля криптографии. Неверный параметр Keyset (набор ключей)

Неверные настройки криптографии в ОС и/или в «1С:Предприятии»

Повторно выполнить настройку криптографии на компьютере. Варианты:

  1. Переустановить личный сертификат.
  2. Провести тестирование контейнера закр. ключа, связанного с сертификатом.
  3. Сбросить пароль на контейнер закр. ключа.
  4. Повторно перенести контейнер закр. ключа в реестр (при необходимости).
  1. Пометить на удаление, сменить краткое имя сертификата ЭЦП, например, поставив префикс «Не использовать», чтобы не спутать с новым элементом справочника.
  2. Добавить в ИБ «1С:Предприятия» сертификат из хранилища сертификатов, для которого была проведена повторная установка.
  3. Провести «Тест настроек сертификата».
  4. Указать новый элемент справочника «Сертификаты ЭЦП» в Соглашении.
  5. Провести «Тест настроек соглашения»
Возможная причина:
Способ устранения:

1.9. На тестовой базе успешно проведен тестовый обмен ЭД, но все то же самое на рабочей базе не удается, даже тест настроек соглашения не проходит

Тестовая база – файловый режим, рабочая база – клиент-серверный

Выполнить настройку криптографии для клиент-серверного варианта работы согласно инструкции

Возможная причина:
Способ устранения:

Отправка данных на сервис «Такском» выполняется с сервера, а пароль можно ввести только на клиенте

Выделить отдельный сертификат ЭЦП, который не подписывает ЭД, для проведения сеансов связи с «Такском» в клиент-серверном варианте. В карточке сертификата ЭЦП установить опцию «Запомнить пароль». Для подписи ЭД в компании использовать другие сертификаты

1.11. При работе через веб-браузер в момент обращения к криптопровайдеру возникает ошибка: «Расширение для работы с криптографией не подключено, операция прервана»

Не установлено расширение криптографии при работе через веб-браузер

Установить требуемый компонент платформы.

При первом обращении к криптопровайдеру возникнет запрос на установку компонента «Расширение для работы с криптографией». Необходимо согласиться на установку компонента.

При необходимости дополнительно ознакомиться с особенностями использования криптографии в веб-браузере

2. Получение ИД и работа с приглашениями

2.1. При попытке «Получить уникальный идентификатор» в Соглашении не происходит никакой реакции в системе.

Или выдает ошибку интернет-поддержки пользователей – « Соединение отсутствует ». При нажатии « Повторить соединение » соединение установлено, но подключения к сервису не происходит.

Ошибки кеширования данных, ошибка встраивания в конфигурацию

Допущена ошибка при регистрации данных об участнике: названии юрлица, ИНН, КПП, сертификата подписи

Часто возникает при регистрации разветвленной филиальной структуры с одноименными юрлицами.

Внимательно следить при оформлении заявки на получение ИД участника обмена. В случае обнаружения ошибки обратиться в техподдержку «Такском»

2.3. В форме Соглашения нет ссылки на автоматическое получение уникального ИД участника, как описано в документации, только поле для ручного ввода ИД.

В конфигурацию не встроена интернет-поддержка пользователей (ИПП) фирмы «1С», автоматическое получение ИД участника возможно только из типовых решений «1С»

Зайти в личный кабинет пользователя веб-ИТС и заполнить заявку на подключение к «1С-Такском» вручную. После одобрения заявки и получения ответа указанный ИД участника ввести в это поле Соглашения

2.4. В «1С» не приходит приглашение по обмену от контрагента, хотя тот точно отправлял и ждет ответа.

Несколько ИД участников на одну и ту же организацию с одними данными ИНН и КПП

В личном кабинете с нужным ИД участника на ресурсе «1С-Такском» (ресурс https://1c.taxcom.ru/ через IE) принять приглашение от контрагента. В случае ошибочного задвоения ИД обратиться в техподдержку «Такском»

2.5. Обмен с поставщиком настроен, в Соглашении об использовании электронных документов через оператора ЭДО статус «Присоединен».

Поставщик отправляет документы через «1С:Предприятие» на подпись (их можно увидеть в личном кабинете получателя на странице «Входящие»), но после выполнения в «1С:Предприятии» команды «Отправить и получить ЭД» в ответ: «Отправлено пакетов (0), Получено пакетов (0)»

Неверные данные в ИБ получателя:

  • уникальный идентификатор организации,
  • сертификат подписи организации

Указать в Соглашении сертификат подписи, который подавался при регистрации, запросить повторно получение ИД участника (должен вернуться правильный ИД), обновить статусы приглашений контрагентам с сервиса

1.10. Клиент-серверный вариант работы информационной базы, настройки криптографии и сертификатов выполнены согласно инструкции. По команде «Отправить и получить ЭД» на клиенте система запрашивает пароль к серверному сертификату.
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
  1. Закрыть обработку интернет-поддержки пользователей, если открыта.
  2. Очистить вручную все содержимое регистра «Параметры интернет-поддержки».
  3. Повторить попытку получения идентификатора (придется заново авторизоваться в системе – ввести свои логин и пароль).

Если не получится, обратиться в техподдержку «1С»

2.2. В «1С:Предприятии» в момент получения уникального идентификатора сервис возвращает неправильный ИД участника.

Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:

В личном кабинете участника обмена «1С-Такском» нет данных о контрагенте – участнике выполняемой операции

В личном кабинете на ресурсе «1С-Такском» (ресурс https://1c.taxcom.ru/ через IE) актуализировать информацию о контрагентах, в Соглашении об обмене в «1С:Предприятии» обновить статусы с ресурса, при необходимости вручную удалить участников из Соглашения

3. Формирование и отправка ЭД

3.1. При формировании ЭД возникают ошибки вида:

Ошибка проверки данных XDTO:

Структура объекта ‘/Документ/Подписант/ЮЛ/ФИО’ не соответствует типу: ФИОТип

Проверка свойства ‘Фамилия’:

Отсутствует обязательное свойство

Не заполнена должность или ФИО у подписанта

Указать необходимую информацию в данных организации по ответственным лицам на дату формирования ЭД

3.2. При формировании ЭД возникают ошибки вида:

Ошибка проверки данных XDTO:
Структура объекта ‘/Документ/СвСчФакт/ГрузОт/ГрузОтпр/Адрес/АдрИно’ не соответствует типу: АдрИноТип
Проверка свойства ‘КодСтр’:
форма: Атрибут
имя: КодСтр
тип: ОКСМТип
Отсутствует обязательное свойство

Не указан код страны в классификаторе стран.

Адрес контрагента введен в ИБ в виде строки вместо структурированного адреса. «1С:Предприятие» воспринимает его как иностранный адрес

Указать код страны в классификаторе стран, заполнить классификатор через подбор из ОКСМ.

Загрузить адресный классификатор в ИБ, указывать адреса своей организации и контрагента строго по требуемой ФНС структуре

2.6. При работе с приглашениями возникают ошибки вида: «Ошибка при выполнении файловой операции ‘AcceptContact? >Ошибка работы с Интернет: Ошибка доступа к ресурсу. Путь не найден: (400)»
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:

Читайте также:Стоит ли перезванивать работодателю после собеседования

Истек срок договора 1С:ИТС, не работают тарифные планы в сервисе «1С-Такском»

Зайти в личный кабинет участника обмена, проверить наличие действующего договора 1С:ИТС, зайти в личный кабинет на ресурсе «1С-Такском» (ресурс https://1c.taxcom.ru/ через IE), проверить наличие активного тарифа (отсутствие предупреждающего сообщение после входа).

Диагностика обработки ЭД на стороне «Такском» теперь возвращает ошибку обработки с указанием того, что нет активного тарифного плана

3.3. После отправки ЭД пропадают в Интернете, не доходят до получателя, а также не приходят подтверждения от оператора «Такском».
Возможная причина:
Способ устранения:

Включена опция «Использовать отложенную отправку ЭД».
Если она включена, физическая отправка ЭД происходит по выполнении команды «Отправить и получить эл. документы» или регл. заданию.

Если опция выключена, то отправка инициируется сразу после подготовки ЭД

Выполнить команду «Отправить и получить эл. документы»

4. Получение и обработка ЭД

3.4. В системе вызывается команда «Сформировать, подписать и отправить», ошибок не возникает, но состояние ЭД по документу информационной базы – «Ожидается отправка», и ЭД не доходит до получателя.
Возможная причина:
Способ устранения:

Ошибка распаковки входящих пакетов ЭД и аналогичная запись в журнале регистрации

Зайти в архив ЭД, на закладке «Нераспакованные пакеты» должны быть элементы, попытаться распаковать вручную. Можно сохранить пакет на диск в виде файла и просмотреть его содержимое

4.1. При получении ЭД система информирует, что есть новые данные, но ЭД не появляются.
Возможная причина:
Способ устранения:

Не установлено соответствие между номенклатурой покупателя и номенклатурой поставщика в информационной базе

Необходимо установить один раз соответствие, вызвав команду «Перезаполнить по данным ЭД» в форме просмотра ЭД или документа информационной базы

4.2. После получения ЭД в созданном документе ИБ колонка «Номенклатура» пустая, хотя при просмотре содержимого ЭД она заполнена.
Возможная причина:
Способ устранения:

Не нашли команду «Отклонить электронный документ» в форме просмотра ЭД, трудно каждый раз заходить в группу команд «Все действия» формы просмотра ЭД для отклонения

В форме просмотра ЭД зайти в группу команд «Все действия», выбрать команду «Отклонить электронный документ».

Форма просмотра ЭД управляемая, поэтому команду отклонения пользователь может самостоятельно поместить в удобное место, если воспользуется настройкой «Все действия» – «Изменить форму…»

4.4. В информационной базе получателя при заполнении данных по ЭД не заполняются документы-основания. Пользователю приходится указывать их вручную.

В форматах ТОРГ-12, Акт и СФ не предусмотрены отдельные поля, нет механизма передачи дополнительных данных к этим форматам

Механизм в БЭД реализован, разработчики прикладных решений начали его внедрять в типовые конфигурации, ожидайте новые релизы

4.5. Не удается найти описанные в документации пункты меню/команды для работы с ЭД в УПП 1.3, нет отдельного интерфейса для работы с ЭДО.

Попытка работать в УПП 1.3 в интерфейсе «Полный», предназначенном для других целей.

Концепция работы с ЭД – команды должны быть доступны пользователю в рабочих журналах и документах, где он выполняет повседневную работу

Настройка обмена ЭД для УПП 1.3 в обычном приложении осуществляется в интерфейсе «Заведующий учетом», работа пользователей с подсистемой – из интерфейсов «Бухгалтерский и налоговый учет», «Закупки», «Продажи» (осн. меню «Сервис» – «Электронные документы»)

4.3. Нет возможности отказаться от электронного документа на принимающей стороне за «один клик».
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Возможная причина:
Способ устранения:
Поиск по форуму
Расширенный поиск
К странице.

COMET-технологии позволяют организовать обновление данных на странице без участия пользователя.

Чаты, интернет-почта и многопользовательские админки — далеко не полный список, где они применимы.

В этом цикле статей — подробно описаны многочисленные тонкие моменты и решения частых проблем.

Что такое COMET ?

COMET (или "server push") — способ передачи данных с сервера на клиент, по инициативе сервера.

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

"По инициативе сервера" означает, что клиент сам не запрашивает сервер, он просто находится на странице.

Старейший пример COMET — чат. Человек просто находится на странице и получает новые сообщения.

Также COMET используется в админках для оповещения об изменениях со стороны других посетителей, для совместного редактирования документов и т.п.

Способы реализации

Способов реализации COMET достаточно много. У них — самые разные характеристики, достоинства и недостатки.
Есть два основных класса.

По сообщению на запрос

Каждое событие на сервере браузер получает отдельным запросом. Здесь есть два основных метода.

  1. Частый опрос (polling)
  2. Длинный опрос (long-poll)

Чтобы уменьшить количество необходимых соединений и задержки, сообщения о событиях пакуют в специальные пакеты, "датаграммы".
Например, одно XML-сообщение может выглядеть как:

Читайте также:Продолжительность рабочего времени социального педагога в школе

При очередном подключении браузер получает сразу весь пакет событий к настоящему моменту.

Поток сообщений через постоянное соединение

Браузер держит постоянное соединение с сервером, так называемый "канал", и получает через него события.

Канал связи разрывается время от времени:

  • чтобы прокси не подумал, что настал таймаут соединения и не порвал его за нас
  • для очистки памяти от мусора старых сообщений

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

Основные способы поддержания постоянного соединения:

  1. Бесконечный IFrame
  2. XMLHTTPRequest, interactive
  3. Multipart XMLHTTPRequest
  4. Event-source

Вы найдете их в других статьях этого раздела.

Общие для постоянных соединений проблемы

Протокол HTTP изначально создавался так, чтобы один запрос возвращал одну единицу информации. А мы хотим — много, отсюда и некоторые сложности.

Буферизация прокси

Такое встречается редко, но прокси может буферизовать определенное количество данных до передачи клиенту. Например, принимать и отдавать ответ блоками по 2К. В этом случае сообщения будут оставаться на прокси, и ждать, пока их не наберется 2К (или какой там размер буфера) байт, и только тогда — передаваться клиенту.

Решение — добавлять к каждому сообщению 2K пробелов.

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

Нельзя GZIP

IFrame, который служит для передачи сообщений, НЕ должен сжиматься gzip/deflate. Иначе говоря, для служебного URL сообщений сжатие должно быть отключено.

Включенное сжатие подразумевает, что браузер ждет конца загрузки, а затем — распаковывает и показывает пользователю. В нашем же случае это категорически противопоказано, а сжимать кусочки страницы (сообщения) по отдельности нельзя.

Это — неприятное последствие хакерской натуры iframe. Например, в long poll сжатие проходит на ура, т.к события не являются частью одной страницы.

Буферизация страницы сервером

Не забудьте отключить буферизацию сервером. В связке Apache/PHP — отключите output buffering и включите ob_implicit_flush:

COMET: частый опрос VS постоянное соединение

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

  1. Реализация длинного коннекта, как правило, усложняет архитектуру. Возможно, можно обойтись решением попроще?
  2. Ряд веб-серверов плохо оптимизированы под большое количество длинных соединений. Например, используются потоки или процессы, которые отъедают фиксированное количество ресурсов и не освобождают их до конца соединения.На уровне OS проблема решается использованием kqueue(FreeBSD) или epoll(Linux).На уровне веб-сервера можно использовать
  1. Apache MPM event для apache 2.2 (экспериментальный и ограниченный MPM, специальный поток обрабатывает Listening и Keep-Alive сокеты)
    не работает как следует с mod_perl/mod_php
  2. Jetty (Java) / Twisted(Python), nginx и другие специализированные серверы c одним потоком/процессом на много клиентов.

Потянет ли текущая серверная архитектура длинные соединения? Ответ неочевиден для сотен/тысяч одновременных соединений, но, скажем, до 100 соединений в любой архитектуре все хорошо.

  • Насколько долго пользователи находятся на одной и той же странице? При переходах коннект, скорее всего, придется открывать заново в любом случае.
  • Если допустимы задержки доставки событий, то, может быть, хватит частого опроса?
  • Классическая(transport-independant) модель COMET

    Посмотрим на взаимодействие клиент-сервер "с высоты птичьего полета", выше деталей передачи данных, транспортов и т.п. Например, так это сделано в специализированном server-push движке lightstreamer.

    Соединения с сервером делятся на два типа

    1. Control connection — контрольные соединения, через которые клиент отправляет запросы на сервер. Это — обычные AJAX-запросы через XMLHTTPRequest.
    2. Push connection(channel) — поток событий, соединение, через которые клиент получает события с сервера

    У всех событий на сервере есть тип. Клиент может подписываться и отписываться на интересующие его события через контрольные соединения. Для удобства типы организованы по схемам. Например, в схеме chat может быть тип message.

    Например, следующая диаграмма описывает типичную последовательность действий:

    1. Клиент открывает потоковое соединение к серверу
    2. Клиент подписывается на события типа Item1 в схеме Schema1
    3. Сервер шлет события
    4. Клиент отписывается от событий через новое контрольное соединение
    5. Клиент закрывает соединение

    Или — вот более сложная диаграмма, в которой клиент подписывается уже на разные типы событий:

    В качестве транспорта в lightstreamer используется iframe. Время от времени его необходимо закрывать для очистки от принятых объектов. При закрытии сессии (это же происходит при refresh страницы в браузере) сервер буферизует новые события до некоторого таймаута и отдает их, как только открывается новая сессия Stream Connection 2 того же пользователя.

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

    Скажите, а как при помощи mpm event решить вопрос создания апачем файлов от юзеров, которым принадлежит папка, в которой работает скрипт, а не nobody.
    Спасибо!

    Вообще-то это не по теме, но все равно ответ — никак

    неужели в этом можно разобраться?

    Изображения вверху записаны в UML-нотации. Конкретнее — это диграммы последовательности (sequence diagram).

    Возможно, проще (и полезнее) — разобраться сначала с sequence diagram в UML вообще, а потом — в конкретными диаграммами здесь.

    я хотел бы написать на perl такой чат c jquery

    можете ли вы подсказать как в этом разобратся?
    нужно написать демона на сокетах? как это все будет?

    Есть ли у Вас информация о том какие из методов используют большие компании вроде Facebook (чат, оповещения), Gmail (чат), Twitter (notifications)?

    Facebook — Tornado (их разработка, Open Source, Python), Gmail — свой сервер, клиентская часть — open source Google Closure Library, Twitter — не в курсе.

    Источник: lawsexp.com

     𝐰𝐨𝐦𝐚𝐧𝐥𝐢𝐠𝐚🌈™