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