ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
995909 Топик полностью
Гyдвинволшебник (16.04.2020 19:21, просмотров: 628) ответил fk0 на Дрючить сервер раз в 10 секунд очень дурная идея, особенно когда клиентов может быть очень много и таблицы большие. Возможно проще не рвать соединение и досылать обновления. Для этого есть chunked transfer encoding, server sent events и websockets как универсальный способ сделать всё.
Отписался ниже по этому поводу. Клиентов с десяток, локальная сетка, XML 10..30 кб. А вот и кусочек наброска "сервера", етить, который предназначен только для этой задачи. Html со стилями и скриптами вообще грузится из Memo, ибо пара сотен строк текста. Все это летает со свистом... Ардуинщики они такие - Апачи с IIS-ами им влом ставить - в деревнях их просто некому сопровождать. И оно еще и работает ;) 
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  IP: string;
  s: string;
 begin
  s:= ARequestInfo.RawHTTPCommand;
  IP:=AThread.Connection.Socket.Binding.PeerIP;

  if Pos('export.xml', s)<>0 then
  begin
   Inc(Cnt_events);
   Label1.Caption:= 'Запросы: '+ IntToStr(Cnt_events);
   if FileExists(GetCurrentDir+ '\www\export.xml') then  idhttpserver1.ServeFile(Athread, AResponseInfo, GetCurrentDir+ '\www\export.xml')
    else  AResponseInfo.ContentText:= 'XML файл отсутствует!';
  end

 else if Pos('sklad.html', s)<>0 then
  begin
    AResponseInfo.ContentText:= Memo1.Text;
  end
....

....

....