The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Для Chrome развивается API для прямых TCP и UDP коммуникаций"
Отправлено rvs2016, 25-Авг-20 17:05 
>> Тю. Вообще бесполезная система. Исходящие-то соединения я и через Ajax наваяю.
> Под Ajax подразумевается XHR? Ну наваяй через него банальный чат реального времени
> без долбёжки сервера постоянным опросом

Долбёжка постоянным опросом - это, конечно, нехорошо.

Но я в браузере запускаю:
let eventSource = new EventSource("урл_к_моему_cgi_скрипту");
и после этого браузер держит с моим cgi-скриптом постоянный канал связи и даже переустанавливает его сам, если канал разрывался.
А серверный cgi-скрипт каждые N секунд шлёт в этот канал данные:

Вот пример, в котором серверный cgi-скрипт ежесекундно секунд шлёт в браузер номер пакета и его время, а через 5 пакетов завершает свою работу, закрывая тем самым канал:

Серверный Perl:


foreach my $num (1..5) {
  my $t = time();
  print "data: num = $num, t = $t<BR>\n";
  sleep 1;
};
print "data: <HR>\n\n";

Браузерный JavaScript:


let eventSource = new EventSource("урл_к_моему_cgi_скрипту");

eventSource.onmessage = function(event) {
  console.log(event.data);
  if (а не закрыть ли нам канал?) {
     // а закрыть!
     eventSource.close()
  } else {
     // а не надо! :-)
     // NOOP
  }
}

Браузер-то потом автоматически переоткрывает этот канал повторным запросом к cgi-скрипту, если в браузерном JavaScript не остановить автоматической восстановление канала, когда он уже не нужен:

Это простейший пример - отправка в браузер пакета ежесекундно. А можно ж не ежескундно, а по другим условиям - например, когда пакет сформировался - хоть через час, хоть через сутки, хоть через месяц, год, век.

>> Входящие нужны!
> Зачем? Закладываться на наличие у пользователя белого IP (ещё и не порезанного
> межсетевым экраном провайдера или работодателя) — уже давно безумие.

Вот зачем:

Мне нужно отправить юзеру пакет.
Обычно это в браузерах 30 лет делают так:
Браузер шлёт пакет на сервер, а получатель пакета в другом браузере получает этот пакет с сервера.
Но сервер же может отвалиться. Может отвалиться даже кластер серверов. И когда не останется ни одного доступного сервера-посредника, тогда надо иметь возможность отправить пакет из браузера в браузер напрямую без посредников в виде веб-серверов. А если такая возможность будет, то веб-серверы для межбраузерного обмена информацией будут и не нужны (кроме начальных этапов типа построения в браузерах таблиц/списков других браузеров, готовых участвовать в межбраузерном обмене пакетами).

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру