Инициализировать двунаправленный поток
Инициализирует новый двунаправленный поток
- Параметры
- Расширенный вызов ?
Функция ИнициализироватьДвунаправленныйПоток(Знач Соединение, Знач Сервис, Знач Метод, Знач Таймаут = 10000) Экспорт
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|---|---|---|---|---|
| Соединение | - | Произвольный | ✔ | Объект соединения |
| Сервис | - | Строка | ✔ | Имя сервиса |
| Метод | - | Строка | ✔ | Имя метода |
| Таймаут | - | Число | ✖ | Таймаут (в мс) |
Возвращаемое значение
Соответствие Из КлючИЗначение - Результат обработки
Для текущего метода нет дополнительных параметров р асширенного вызова.
Предупреждение
NOCLI: данный метод недоступен для использования в CLI версии
Пример использования для 1С:Предприятие/OneScript
Адрес = "https://grpcb.in:9001";
Proto1 = "https://hut.openintegrations.dev/test_data/grpcbin_with_import.proto"; // Строка, путь к файлу или URL
Proto2 = "https://hut.openintegrations.dev/test_data/mt.proto"; // Строка, путь к файлу или URL
Схемы = Новый Соответствие;
Схемы.Вставить("main.proto" , Proto1); // Основной
Схемы.Вставить("my_types.proto", Proto2); // Для импорта в основной
Параметры = OPI_GRPC.ПолучитьПараметрыСоединения(Адрес, Схемы);
Tls = OPI_GRPC.ПолучитьНастройкиTls(Истина);
Сервис = "grpcbin.GRPCBin";
Метод = "DummyBidirectionalStreamStream";
Соединение = OPI_GRPC.ОткрытьСоединение(Параметры, Tls);
Если Не OPI_GRPC.ЭтоКоннектор(Соединение) Тогда
ВызватьИсключение Соединение["error"];
КонецЕсли;
МассивСтрок = Новый Массив;
МассивСтрок.Добавить("one");
МассивСтрок.Добавить("two");
МассивСтрок.Добавить("three");
Данные = Новый Соответствие;
Данные.Вставить("f_string" , "Test message");
Данные.Вставить("f_bool" , Истина);
Данные.Вставить("f_strings", МассивСтрок);
Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value"));
Результат = OPI_GRPC.ИнициализироватьДвунаправленныйПоток(Соединение, Сервис, Метод); // <---
Если Не Результат["result"] Тогда
ВызватьИсключение Результат["error"];
Иначе
IDПотока = Результат["streamId"];
КонецЕсли;
МассивРезультата = Новый Массив;
Счетчик = 0;
Пока Счетчик < 10 Цикл
Данные.Вставить("f_int32", Счетчик + 1);
ТекущаяОтправка = OPI_GRPC.ОтправитьСообщение(Соединение, IDПотока, Данные);
Если Не ТекущаяОтправка["result"] Тогда
Ошибка = ТекущаяОтправка["error"];
Если Ошибка = "Timeout" Тогда
Пр одолжить;
Иначе
ВызватьИсключение СтрШаблон("Ошибка отправки: %1 (обработано сообщений %2)", Ошибка, Счетчик);
КонецЕсли;
КонецЕсли;
ТекущееПолучение = OPI_GRPC.ПолучитьСообщение(Соединение, IDПотока);
Если Не ТекущееПолучение["result"] Тогда
ВызватьИсключение СтрШаблон("Ошибка получения: %1 (обработано сообщений %2)", Ошибка, Счетчик);
КонецЕсли;
МассивРезультата.Добавить(ТекущееПолучение["message"]);
Счетчик = Счетчик + 1;
КонецЦикла;
OPI_GRPC.ЗакрытьПоток(Соединение, IDПотока);
Результат
{
"result": true,
"streamId": "4f663cb7-3593-41ac-b65b-b4f5cb083afe"
}