Я читаю отличный post на Rails 5 actioncable введение. Там говорится: «Action Cable использует API-интерфейс захвата сокета Rack, чтобы взять на себя управление соединениями с сервера приложений». Что означает «захват гнезда»?Что такое захват сокета?
ответ
Socket Hijacking был реализован с rack 1.5.0
- модульный интерфейс веб-сервера Ruby.
Rack 1.5.0
в основном обеспечивает простой и адаптируемый интерфейс для разработки приложений в рельсах. Он делает это, просто передавая HTTP-запросы и их ответы. Он также объединяет API для веб-серверов, веб-фреймворков и промежуточного программного обеспечения в один вызов метода.
Так, в rack 1.5.0
сокет-захват используется, чтобы позволить приложениям rails обгонять клиентский сокет и выполнять другие операции над ним. Эти операции включают в себя:
- Реализация WebSockets
- потоковых данные
- Другой интерактивности между браузером и сервером пользователя
WebSockets позволяет пользователю отправлять сообщения на сервер и получить вызванные событиями, без необходимости опроса сервера для ответа.
Это показано на этой диаграмме - как вы можете видеть, после открытия соединения WebSocket сообщения могут быть отправлены и получены между пользователем и сервером.
Во всяком случае, в Rack гнездо угон API, который вы указали, что по существу обеспечивает два режима:
Полный угон API
- T он дает приложению полный контроль над тем, что происходит через сокет. Сервер приложений не отправляет ничего через сокет и позволяет приложению позаботиться об этом.
Частичный угон API
- Это дает контроль над приложение сокета после того как сервер приложений уже послал заголовки. Этот режим в основном используется для потоковой передачи.
Итак - В конце концов, розетка угон в основном позволяет рубин/рельсы приложения для переопределения/перегнать сокет клиента и выполнять различные функции на нем, или, как вы писали - взять под контроль соединений из приложения сервер.
Если мой ответ помог, отметьте его как принято :) –
Спасибо за ваш ответ, это действительно помогает! ..Однако я не понимаю, почему кто-то дал отрицательный голос за этот вопрос .... –