ServiceStack: выбор отправляемых сервером событий через WebSockets

Просматривал последние заметки о выпуске, в которых упоминается новая функция SSE. Эта функция, безусловно, полезна и, похоже, использует длинные опросы в обратном направлении к браузеру.

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

Мне просто интересно, почему выбор SSE вместо WebSockets.

1 ответ

Решение

Причины поддержки отправленных событий сервера описаны в демонстрационном проекте чата:

Server Sent Events (SSE) - это элегантная веб-технология для эффективного получения push-уведомлений с любого HTTP-сервера. Он может рассматриваться как сочетание длинных опросов и односторонних WebSockets и имеет много преимуществ перед каждым:

  • Простой - отправленные сервером события - это всего лишь один долгоживущий HTTP-запрос, который может поддерживать любой HTTP-сервер
  • Эффективно - каждый клиент использует одно TCP-соединение, и каждое сообщение позволяет избежать накладных расходов на HTTP-соединения и заголовки, которые часто бывают быстрее, чем веб-сокеты.
  • Resilient - браузеры автоматически обнаруживают разрыв соединения и автоматически переподключаются
  • Функциональная совместимость - поскольку это просто старый HTTP, он интроспективен с вашими любимыми инструментами HTTP и даже работает через HTTP прокси (с отключенной буферизацией и проверенным кодированием).
  • Хорошо поддерживается - как веб-стандарт поддерживается во всех основных браузерах, кроме IE, который можно включить с помощью полифилов.

т. е. это красивый простой и элегантный веб-стандарт с лучшей верностью HTTP, чем у WebSockets, который идеально подходит для коммуникаций Server Push, которые работают как в ASP.NET, так и в SelfHosts ServiceStack, не требуя каких-либо дополнительных зависимостей.NET или требуя, чтобы хост Windows Server имел WebSockets поддержка включена для использования. Поддержка IE может быть включена с помощью polyfills.

WebSockets может быть поддержан позднее, но для этого, вероятно, потребуются дополнительные внешние зависимости и требования для Windows Server, который поддерживает WebSockets.

Другие вопросы по тегам