2014-11-21 2 views
1

В моем MELT monitor (бесплатное программное обеспечение GPLv3, альфа-этап, который позже будет связан с MELT, языком, специфичным для домена, для расширения компилятора GCC, является специализированным HTTP-сервером [meta-] запрограммирован в C, то есть его код C будет все больше и больше самогенерироваться), используя libonion (библиотеку HTTP-сервера) и jquery.websocket, я хочу использовать websocket только для асинхронных сообщений в формате JSON с моего специализированного веб-сервера (монитор MELT) в браузер (например, недавний FireFox).Обмен сообщениями только с записью (от HTTP-сервера до браузера)

Я хочу, чтобы у меня не было нового канала событий от браузера к серверу, поэтому мой вопрос: имеет ли смысл использовать веб-порты только для HTTP-сервера для асинхронной связи браузера (и не использовать другую передачу, от браузера до HTTP-сервер)?

Может специализированный сервер HTTP (расплав монитор) делать shutdown(2) с SHUT_RD на WebSocket отключить любую потенциальную передачу через WebSocket в от браузера к HTTP-серверу, или это противоречит стандартам WebSockets? Все сообщения от браузера к серверу будут представлять собой синхронный HTTP (например, AJAX).

Я просто открытие WebSockets ....

ответ

3

WebSockets являются дуплексный канал, по которому обе стороны могут передавать данные, когда они хотят. Это делает его идеальным для сценариев, когда сервер отправляет необъявленные данные клиенту, потому что с использованием предыдущих технологий, таких как XmlHttpRequest, сервер мог отправлять данные только тогда, когда это было ранее запрошено.

В заявлении RFC 6455 указано, что стандартный сервер веб-узлов ДОЛЖЕН отвечать на PING-кадр с PONG-кадром. Когда вы закрываете канал от клиента к серверу, клиент больше не сможет отправлять пинги. Кроме того, клиент отправит CLOSE-кадр, когда он захочет прекратить соединение, которое вы также должны прослушать.

Однако стандарт не говорит о том, что ваш сервер должен ответить на любые другие кадры каким-либо конкретным способом после завершения рукопожатия, поэтому вы можете просто игнорировать любые входящие кадры с клиента, кроме PING и CLOSE.

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