Подтвердить что ты не робот

Как использовать сокеты в JavaScript\HTML?

Как использовать сокеты в JavaScript\HTML?

Может быть, вы используете какой-нибудь классный HTML5?

Библиотеки? Учебники? Статьи в блоге?

4b9b3361

Ответ 2

Как использовать сокеты в 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);
};

Вам потребуется специализированное приложение сокета на стороне сервера, чтобы выполнить соединения и сделать с ними что-то; это не то, что вы обычно делаете с интерфейсом сценариев веб-сервера. Однако это относительно простой протокол; моя noddy Python SocketServer-конечная точка была всего лишь несколькими страницами кода.

В любом случае, он еще не существует. Ни спецификация на стороне JavaScript, ни спецификация транспорта сети не прибиты, а браузеры не поддерживают ее.

Однако вы можете использовать Flash, где доступно, чтобы предоставить script резервную копию до тех пор, пока WebSocket не будет широко доступен. Gimite web-socket-js - один из таких примеров. Тем не менее, вы подвергаетесь тем же ограничениям, что и Flash Sockets, а именно, что ваш сервер должен иметь возможность выставлять междоменную политику по запросу на порт сокета, и часто возникают проблемы с прокси-серверами/брандмауэрами. (Flash-сокеты создаются напрямую, для кого-то, у кого нет прямого публичного доступа к IP-адресу, который может выйти из сети только через HTTP-прокси, они не будут работать.)

Если вам действительно нужна двусторонняя связь с низкой задержкой, вам лучше не вставлять XMLHttpRequest пока.

Ответ 3

Я думаю, что важно упомянуть, теперь, когда этот вопрос старше 1 года, Socket.IO с тех пор вышел и кажется быть основным способом работы с сокетами в браузере; насколько это возможно, он также совместим с Node.js.