Рабочая группа WHATWG по доработке HTML предложила свой стандарт для получения событий с сервера в HTML 5.0. Для этого в нем предусмотрен специальный элемент event-source, который
реализован в Opera 9+, и предоставляет довольно удобный способ реализации событий с сервера.
Тут будут сообщения, если браузер - Opera 9+
Чтобы Ваш HTML проходил валидацию, да и вообще для удобства, лучше не ставить этот элемент в разметку, а манипулировать им при помощи javascript.
У элемента event-source есть атрибут src и метод addEventSource, которые говорят браузеру соединиться с указанным URL и принимать оттуда события. Например,
var el = document.createElement("event-source")
el.setAttribute('id', 'events')
el.setAttribute('src', 'server.php')
В ответ сервер должен сначала выразить готовность посылать события, отправив заголовок:
Т.е каждое событие это блок из Event:имя события\n и данных. Каждое поле данных пишется на отдельной строке и имеет имя, здесь: "data". После двоеточия ставится пробел. События разбиваются двойным переводом строки.
На момент написания, Opera 9.2 поддерживает только имя поля "data", хотя по спецификации можно указать любое.
Если поле с одним именем повторяется, то данные сливаются с переводом строки. Например, здесь поле data="1\n2":
Event: someEvent
data: 1
data: 2
Так что многострочные данные тоже можно передавать через event source.
Браузер соединяется с сервером, как только в документе появляется event-source, и отсоединяется - как только event-source уходит из документа.
Клиентский код примера выше:
...
// создать элемент event-source
var el = document.createElement("event-source")
el.setAttribute('src', '/server_push/event_source.php')
el.setAttribute('id', 'event_source')
// добавить обработчик события newMessage
var newMessageHandler = function(event) {
var d = document.createElement('div')
d.innerHTML = "data: "+event.data
out.appendChild(d) // out - это div для вывода, определен ранее
}
el.addEventListener('newMessage', newMessageHandler, false);
// эта функция добавляет event-source в документ, браузер стучится на сервер
var startIt = function() {
document.body.appendChild(el)
}
// эта функция убирает event-source, браузер отключается от сервера
var stopIt = function() {
document.body.removeChild(el)
}
// запускаем, ограничиваем подключение 10 секундами
startIt()
setTimeout(stopIt, 10000)
В event-source принципиально не предусмотрена обработка ошибок. Единственный реальный способ ее сделать - регулярно слать ping-пакеты с сервера. Так, чтобы если клиент не получил ping-пакет вовремя - регистрируем задержку, прошел таймаут без пакетов - связь считаем нарушенной.
Никаких HTTP-заголовков, статусов с сервера, уведомлений об обрыве связи нет. В этом смысле Бесконечный IFrame удобнее.
I want to express my profound appreciation to the author for their courage and passion in tackling such a challenging and expansive sinister squidward subject matter, demonstrating their expertise and contributing to the advancement of knowledge in their field.
Have you ever wondered what kind of love people out there have in the world? If yes, then love tester is the answer for you. This place has games to calculate love compatibility between two people, kiss simulation games, office dating and many other games for you to experience.
https://sprunkiphase3.com/
sprunki phase 3 a fan-made mod inspired by the original Incredibox game. Mix fresh beats, create unique music, and enjoy exclusive content online at sprunkiphase3.com
I am usually a person who likes to spend time playing games and quordle game always excites me. The material in your blog is really clear and easy to understand. I was able to gain information that I did not know.
Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены. Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
многострочные данные тоже можно передавать через event source.
An excellent article. A lot of information is given. Color Tunnel is one of the sites having good HTML.
Through this article I learned what a good html is. It can be said that the baldi's basicswebsite is also a good html website.
I want to express my profound appreciation to the author for their courage and passion in tackling such a challenging and expansive sinister squidward subject matter, demonstrating their expertise and contributing to the advancement of knowledge in their field.
I was just looking for information on the web when I came across your post io games unblocked
Have you ever wondered what kind of love people out there have in the world? If yes, then love tester is the answer for you. This place has games to calculate love compatibility between two people, kiss simulation games, office dating and many other games for you to experience.
https://sprunkiphase3.com/
sprunki phase 3 a fan-made mod inspired by the original Incredibox game. Mix fresh beats, create unique music, and enjoy exclusive content online at sprunkiphase3.com
I am usually a person who likes to spend time playing games and quordle game always excites me. The material in your blog is really clear and easy to understand. I was able to gain information that I did not know.
This content is truly valuable! Happy to have found this blog, and I appreciate your idle breakout dedication. Hope to see more soon!
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.