Я создаю веб-приложение, которое должно взаимодействовать с другим приложением, используя соединения сокетов. Для меня это новая территория, поэтому хочу быть уверенным, что сокеты отличаются от websockets. Похоже, они только концептуально похожи.
Спроси, потому что изначально я планировал использовать Django в качестве основы для своего проекта, но в сообщении SO, которое я связал выше, было совершенно ясно, что веб-узлы невозможны (или, по крайней мере, не надежны, даже с чем-то вроде django-websockets) с использованием предпочтительной настройки Django (Apache с mod_wsgi). Тем не менее, я нашел другие сообщения, которые случайно импортируют модуль сокета Python для чего-то простого, как захват имени хоста сервера.
Итак:
Чтобы ответить на ваши вопросы.
В своей реализации Websockets используют сокеты. Веб-узлы основаны на стандартном протоколе (теперь в окончательном вызове, но еще не окончательном), который определяет соединение "рукопожатие" и сообщение "кадр". Две стороны проходят процедуру установления связи, чтобы взаимно принять соединение, а затем использовать стандартный формат сообщения ( "кадр" ) для передачи сообщений взад и вперед.
Я разрабатываю структуру, которая позволит вам напрямую общаться с машиной с установленным программным обеспечением. Это может подойти к вашей цели. Вы можете следить за моим блогом, если хотите: http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html
Вам нужно будет использовать WebSockets (или какой-либо аналогичный модуль протокола, например, поддерживаемый плагином Flash), потому что обычное приложение-браузер просто не может открыть чистый TCP-сокет.
Модуль Socket.IO
, доступный для node.js
, может многое помочь, но обратите внимание, что это не является чистым модулем WebSocket.
На самом деле это более общий коммуникационный модуль, который может работать поверх других сетевых протоколов, включая WebSockets и Flash-сокеты.
Следовательно, если вы хотите использовать Socket.IO
на сервере, вы также должны использовать их код и объекты клиента. Вы не можете легко сделать raw WebSocket
соединения с сервером Socket.IO
, так как вам нужно будет эмулировать их протокол сообщений.
Что касается вашего вопроса (b), имейте в виду, что спецификация Websocket не была доработана. Согласно W3C:
Разработчики должны знать, что эта спецификация нестабильна.
Лично я считаю, что в настоящее время Websockets будет слишком кровоточащим. Хотя я, вероятно, найду их полезными через год или около того.
WebSocket - это еще один протокол уровня приложения по протоколу TCP, как и HTTP.
Некоторые фрагменты < Spring в действии 4 > , приведенном ниже, надеемся, что это поможет вам лучше понять WebSocket.
В своей простейшей форме WebSocket имеет только канал связи между двумя приложениями (не обязательно браузер участие)... Связь WebSocket может использоваться между любыми видами приложений, но наиболее распространенное использование WebSocket заключается в том, чтобы облегчить связь между серверным приложением и браузером.