Як використовувати сокети в JavaScript \ HTML? [зачинено]


82

Як використовувати сокети в JavaScript \ HTML?

Можливо, ви використовуєте якийсь класний HTML5?

Бібліотеки? Підручники? Статті в блозі?


1
Що ти намагаєшся робити? Який браузер ви хочете підтримувати?
James Black

Припускаю, ви звертаєтесь до Web Sockets
okw

Ви маєте на увазі сокети TCP?
AlikElzin-kilaka

Відповіді:


57

Технічні характеристики:

Статті:

Підручник:

Бібліотеки:


1
Оновлення: bobinceнадано простий підручник на цій сторінці: P
okw

3
Так, цим користувачем, мабуть, буде власний Kaazing Джонас Якобі. Часто спливає будь-де, де згадується WebSocket! Я не зовсім отримую від Kaazing TBH, що сидить на websocket.org, щоб просувати те, що здається монолітним, не фактично безкоштовним рішенням клієнт-сервер, яке має підтримку WebSocket, здавалося б, невелику частину того, що він насправді робить. Не знаю, це може бути хорошим рішенням, але мені не зовсім приємно з маркетингом. [відредаговано, отже, після відповіді
okw

78

Як використовувати сокети в JavaScript / HTML?

Немає можливості використовувати сокети загального призначення в JS або HTML. З одного боку, це було б катастрофою для безпеки.

У HTML5 є WebSocket. Клієнтська сторона досить тривіальна:

socket= new WebSocket('ws://www.example.com:8000/somesocket');
socket.onopen= function() {
    socket.send('hello');
};
socket.onmessage= function(s) {
    alert('got reply '+s);
};

Вам знадобиться спеціалізований сокет-додаток на стороні сервера, щоб взяти з'єднання та щось з ними зробити; це не те, що ви зазвичай робите з інтерфейсу сценаріїв веб-сервера. Однак це відносно простий протокол ; моєю чудовою кінцевою точкою на базі Python SocketServer була лише пара сторінок коду.

У будь-якому випадку, насправді його поки що немає. Ні специфікація на стороні JavaScript, ні специфікація мережевого транспорту не забиті, і жоден браузер це не підтримує.

Тим не менш, ви можете використовувати Flash там, де це можливо, щоб забезпечити ваш скрипт резервним резервом, поки WebSocket не стане широко доступним. Веб-сокет-js від Gimite - один із безкоштовних прикладів такого. Однак на вас поширюються ті самі обмеження, що і Flash Sockets, а саме, що ваш сервер повинен мати можливість виписувати міждоменну політику на запит до порту сокета, і ви часто будете мати труднощі з проксі / брандмауерами. (Flash-розетки виготовляються безпосередньо; для тих, хто не має прямого загальнодоступного IP-доступу, хто може вийти з мережі лише через HTTP-проксі, вони не працюватимуть.)

Якщо вам насправді не потрібна двостороння комунікація з низькою затримкою, вам краще дотримуватися XMLHttpRequestпоки що.


Які типи прив'язок WS підтримуватиме html5?
Rella

Якщо ви маєте на увазі, як виглядатимуть об’єкти WebSocket у браузері, це ще належить з’ясувати, але специфікація ( w3.org/TR/websockets ) останнім часом не сильно змінилася. Якщо за допомогою WS Bindings ви говорите про веб-служби, то жодна: WebSocket не буде говорити про SOAP або будь-який інший вже існуючий протокол.
bobince

1
Ви кажете: "Немає можливості використовувати сокети загального призначення в JS або HTML. Це, мабуть, буде катастрофою для безпеки". а як щодо фонегапу чи програм, пов’язаних із фонегапом? HTML + js потрібен не лише для стандартних браузерів.
обійхан

46

Думаю, важливо згадати, що тепер, коли цьому питанню вже більше 1 року, Socket.IO з тих пір вийшов і, схоже, є основним способом роботи з сокетами в браузері; він також сумісний з Node.js , наскільки мені відомо.


13
В ПОРЯДКУ. Минуло майже 6 років. Чи змінилися стандарти?
Аарон Ісав,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.