Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Получение данных text/event-stream с вебсервиса

Получение данных text/event-stream с вебсервиса
Я
   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);        
    КонецЕсли;

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.