Имя: Пароль:
1C
1С v8
Получение данных text/event-stream с вебсервиса
0 bmitkin
 
10.06.20
14:10
Всем доброго дня!
Мне нужно получить и обработать данные с веб-сервиса, который отдаёт их как непрерывный поток: text/event-stream
Т.е. соединение устанавливается, передаются некоторые данные и сервером оно не разрывается. Данные передаются не постоянно, а при возникновении некоторых событий.
Более подробно описано тут: https://www.fmsdocumentation.com/apis/status-api/?lang=ru

Пытаюсь получить средствами 1С:

    HTTPСоединение    = Новый HTTPСоединение(Сервер,,,,,50,Новый ЗащищенноеСоединениеOpenSSL());
    HTTPЗапрос    = Новый HTTPЗапрос(АдресСервиса);
    ОтветСервера    = HTTPСоединение.Получить(HTTPЗапрос); // вот тут зависает, а потом сбрасывает по таймауту
    Поток    = ОтветСервера.ПолучитьТелоКакПоток();
    ЧтениеДанных    = Новый ЧтениеДанных(Поток);
    СтрокаДанных    = ЧтениеДанных.ПрочитатьСтроку();

Может я что-то не так делаю?

Пока сделал через Wscript.Shell.
Вот такая конструкция работает:
    СтрокаЗапуска = "curl  -k -N " + """https://"; + Сервер + АдресСервиса + """";
    
    WshShell = Новый COMОбъект("Wscript.Shell");
    WshExec = WshShell.Exec(СтрокаЗапуска);
    
    OutStream = WshExec.StdOut;
    СтрокаДанных    = OutStream.ReadLine();
    
    // После получения первой строки завершаем процесс.
    WshExec.Terminate();// Процедура завершения иногда долгая ~2 сек
    
    Если НРЕГ(Лев(СтрокаДанных, 5)) = "data:" Тогда
        СтрокаДанных    = Сред(СтрокаДанных, 6);        
    КонецЕсли;

Может кто-то сталкивался с подобным?
1 etc
 
10.06.20
14:23
(0) что-то мне подсказывает что 1С не умеет Server-Sent Events
2 lodger
 
10.06.20
15:30
+1 к (1)
такие штуки надо вешать вне 1с, а это что-то пускай ковыряет https-сервис в 1ске через менеджер очередей.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший