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