У чому різниця між socket - ом і websocket - ом stack overflow російською

веб сокет - це просто обгортка навколо звичайних TCP сокетів (хоча я підозрюю, що теоретично може бути і навколо чого завгодно, що може виглядати як сокет). Відмінність від звичайних гнізд в тому, що протокол обміну стандартизований (але існує кілька стандартів) і обмін сильно схожий на звичайний HTTP. Також браузери вміють його з коробки (не всі правда). А також вебсокети допомагають з безпекою і іншими пляшками.

відповідь дан 29 Березня '16 об 11:26

Socket - це дійсно програмний інтерфейс. Це абстрактне поняття, яке, в більшості випадків, використовується для комунікації програм в мережі (але не тільки).

WebSocket - це протокол (будь-якої заздалегідь обумовлений порядок) обміну даними (як, наприклад, http, ftp, ssl і т.д.). Цей протокол йде поверх (передається за допомогою) протоколу TCP.

Socket і WebSocket - це різні поняття в принципі. При роботі за протоколом WebSocket ви будете використовувати звичайні сокети для з'єднання. Так само як і при роботі з іншими протоколами будуть використані сокети (і для роботи з http, з ftp і ін.).

Протокол WebSocket створювався для того, щоб можна було підтримувати тривалі нерозривні сполуки між браузером (який є клієнтом) і веб-сайтом (який є сервером).

Протокол WebSocket не схожий на HTTP. Єдине, чим він нагадує HTTP - тільки одним найпершим запитом на підключення (так званим рукостисканням / handshake). Це було зроблено, тому що спочатку протокол розрахований на роботу в браузері і необхідно було визначення можливості підтримки його. Після того, як з'єднання встановлено, нічого схожого на протокол HTTP в протоколі WebSocket навіть близько немає.

Сам протокол WebSocket не гарантує ніякої безпеки для переданих даних. Мінімальна кодування, яке він передбачає - це банальна ксорка (XOR). При цьому маска для ксоркі передається разом з повідомленням. І призначена ця ксорка для передачі даних через проксі сервера, які нічого не знають про протокол WebSocket. Це не захист ваших даних - це захист проксі сервера. І в зворотну сторону (від сайту до браузеру) дані не кодуються ксоркой, зважаючи на відсутність необхідності.

Саме відсутність будь-яких наворотів в протоколі WebSocket і дає йому можливість швидкої роботи.

@KoVadim Згідно з моїм відповіді, слід розрізняти протоколи між собою. Мова в питанні (і відповіді) йде саме про websocket. Не слід думати, що протокол websocket забезпечує безпеку. Згаданий Вам wss - це не окремий протокол - це протокол websocket "обгорнутий" в протокол TLS (спадкоємець протоколу SSL). Саме протокол TLS забезпечує безпеку даних і він не має ніякого відношення до протоколу Websocket. Як і в своїй відповіді вище Ви знову ж намагаєтеся спростити / підмінити поняття. - Max ZS 6 Квітня '16 в 7:22

@Iga Але необхідно розуміти, що WebSocket окремий протокол. І його реалізація може бути "за межами" браузера і веб-сервера. Ви можете писати свій сервер і свій клієнт, які будуть працювати по протоколу WebSocket. І, взагалі-то вся робота з протоколом WebSocket виглядає чимось схожим на роботу зі звичайним TCP протоколом. - Max ZS 6 Квітня '16 о 8:33