2012-02-05 5 views
1

В принципе, у меня есть сервер, который посылает информацию (в этом случае данные о температуре, каждый второй)Javascript TCP соединение гнездо

Я хочу, чтобы температура отображается и динамически обновляется на веб-странице, только с помощью JavaScript.

В любом случае я не могу изменить сервер. Кажется простым, но я не мог найти то, что мне было нужно.

+0

Javascript не может выполнять TCP. Вам нужна помощь на стороне сервера. – zneak

+0

Взгляните на [this] (http://socket.io/) – andriy

+0

@zneak - почему Javascript не может выполнять TCP? Я вижу новый стандарт, ползущий Javascript spine: http://www.w3.org/TR/raw-sockets/ –

ответ

0

Что вам нужно сделать, это установить соединение с PHP или что-то еще на стороне сервера и вернуть результат через AJAX на ваш JavaScript.

+0

AJAX, в общем, не так уж и хорош для нажатий - вам понадобится запрос для каждого обновления, т. Е. 1 HTTP-запрос в секунду! Кроме того, использование AJAX означает, что вы должны иметь возможность обрабатывать угловые случаи, такие как отсутствие вывода, а также реализовать механизм, чтобы не пропустить обновления. Если вы не хотите использовать WebSocket, вы должны действительно использовать что-то вроде событий с сервером. – phihag

+0

@phihag Обратите внимание, что Firefox фактически может обрабатывать сервер в XMLHTTPRequest, поэтому он может получать поток из нескольких XML-документов. – Neil

+0

ajax не откроется conneciton ... ajax продолжает запрашивать, что может быть большим беспорядком для сайта со многими посетителями ....... –

-1

JavaScript может не открыть произвольные TCP-соединения, поскольку это позволит использовать все виды хаоса в сочетании с услугами, которые аутентифицируются на основе IP-адреса или вообще не защищены (и защищены только брандмауэрами). Это включает в себя общие файлы Windows или NFS, ваш средний принтер, среднюю сетевую игру, средний веб-интерфейс домашнего маршрутизатора и множество корпоративного программного обеспечения.

Вы не можете запретить браузеру посещение вредоносного сайта (так как это включает visiting a trusted site with malicious ads). Если эти сайты могут влиять на произвольные TCP-соединения, они могут, например, попробовать каждый IP-адрес в RFC 1918 private address ranges или каждый IP-адрес в диапазоне адресов организации, из которой приходит клиент, и определить, какие устройства у вас есть. Это само по себе представляет собой серьезное нарушение конфиденциальности, но представьте, что вредоносный сайт нашел принтер, а затем распечатал спам в вашем офисе, как только вы его случайно посетили.

Что вы можете сделать, это использовать сервер WebSocket для перевода собственного TCP в WebSockets. Большинство реализаций Websocket будут иметь такой сервер, как демонстрационное приложение, но вы также можете использовать standalone proxy.

+0

Почему хаос? Отправка пользовательских данных по необработанному TCP может иметь множество преимуществ - от простоты до оптимизации. –

+0

@kilaka Ну, для одного, многие сервисы и устройства (такие как Windows File Shares, локальные домашние маршрутизаторы, игры, принтеры и т. Д.) Подключаются только к или предоставляют особые предпочтения локальным IP-адресам. Поэтому, если JavaScript разрешает произвольные TCP-соединения, каждый вредоносный сайт может, например, распечатать спам-сообщения * на каждом подключенном принтере. – phihag

+0

Не согласен - браузер является инициатором подключения к определенному серверу/порту. Он не может получать произвольные данные (спам) с других серверов/машин. –

Смежные вопросы