2016-09-17 6 views
1

Я читаю отличный post на Rails 5 actioncable введение. Там говорится: «Action Cable использует API-интерфейс захвата сокета Rack, чтобы взять на себя управление соединениями с сервера приложений». Что означает «захват гнезда»?Что такое захват сокета?

+0

Если мой ответ помог, отметьте его как принято :) –

+0

Спасибо за ваш ответ, это действительно помогает! ..Однако я не понимаю, почему кто-то дал отрицательный голос за этот вопрос .... –

ответ

3

Socket Hijacking был реализован с rack 1.5.0 - модульный интерфейс веб-сервера Ruby.

Rack 1.5.0 в основном обеспечивает простой и адаптируемый интерфейс для разработки приложений в рельсах. Он делает это, просто передавая HTTP-запросы и их ответы. Он также объединяет API для веб-серверов, веб-фреймворков и промежуточного программного обеспечения в один вызов метода.

Так, в rack 1.5.0 сокет-захват используется, чтобы позволить приложениям rails обгонять клиентский сокет и выполнять другие операции над ним. Эти операции включают в себя:

  • Реализация WebSockets
  • потоковых данные
  • Другой интерактивности между браузером и сервером пользователя

WebSockets позволяет пользователю отправлять сообщения на сервер и получить вызванные событиями, без необходимости опроса сервера для ответа.

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

WebSockets


Во всяком случае, в Rack гнездо угон API, который вы указали, что по существу обеспечивает два режима:

  • Полный угон API

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

    • Это дает контроль над приложение сокета после того как сервер приложений уже послал заголовки. Этот режим в основном используется для потоковой передачи.

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

 Смежные вопросы

  • Нет связанных вопросов^_^