Обработать двунаправленный поток
Инициализирует двунаправленный поток, после чего передает и отправляет сообщения в указанном порядке
- Параметры
- Расширенный вызов ?
Функция ОбработатьДвунаправленныйПоток(Знач Соединение, Знач Сервис, Знач Метод, Знач ПорядокОбмена, Знач Таймаут = 10000, Знач Tls = Неопределено, Знач ПродолжатьПолучение = Истина) Экспорт
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|---|---|---|---|---|
| Соединение | --conn | Произвольный | ✔ | Существующее соединение или параметры соединения |
| Сервис | --service | Строка | ✔ | Имя сервиса |
| Метод | --method | Строка | ✔ | Имя метода |
| ПорядокОбмена | --exch | Массив Из Произвольный | ✔ | Массив из данных запросов и Неопределено там, где необходимо получение |
| Таймаут | --tout | Число | ✖ | Таймаут выполнения отдельной операции (в мс) |
| Tls | --tls | Структура Из КлючИЗначение | ✖ | Настройки TLS, если необходимо. См. ПолучитьНастройкиTls |
| ПродолжатьПолучение | --cnt | Булево | ✖ | Продолжать получение после обработки порядка обмена |
Возвращаемое значение
Соответствие Из КлючИЗначение - Результат обработки
Для текущего метода нет дополнительных параметров расширенного вызова.
подсказка
Пример: Получение сообщения после каждых двух отправленных и еще 3 в конце (null в 1С = Неопределено)
ПорядокОбмена: [{Сообщение1}, {Сообщение2}, null, {Сообщение3}, ... {СообщениеN}, null, null, null, null, null]
Пример использования для 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(Истина);
МассивСтрок = Новый Массив;
МассивСтрок.Добавить("one");
МассивСтрок.Добавить("two");
МассивСтрок.Добавить("three");
Данные = Новый Соответствие;
Данные.Вставить("f_string" , "Test message");
Данные.Вставить("f_bool" , Истина);
Данные.Вставить("f_strings", МассивСтрок);
Данные.Вставить("f_sub" , Новый Структура("f_string", "Nested value"));
Сервис = "grpcbin.GRPCBin";
Метод = "DummyBidirectionalStreamStream";
ПорядокОбмена = Новый Массив;
Для Н = 1 По 10 Цикл
ПорядокОбмена.Добавить(Данные); // Одно отправляем
ПорядокОбмена.Добавить(Неопределено); // Одно получаем
КонецЦикла;
Результат = OPI_GRPC.ОбработатьДвунаправленныйПоток(Параметры, Сервис, Метод, ПорядокОбмена, , Tls);
- Bash
- CMD/Bat
# JSON данные также могут быть переданы как путь к файлу .json
oint grpc ОбработатьДвунаправленныйПоток \
--conn "{'address':'https://grpcb.in:9001','proto':{'main.proto':'https://hut.openintegrations.dev/test_data/grpcbin_with_import.proto','my_types.proto':'https://hut.openintegrations.dev/test_data/mt.proto'}}" \
--service "grpcbin.GRPCBin" \
--method "DummyBidirectionalStreamStream" \
--exch "[{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null]" \
--tls "{'use_tls':true,'accept_invalid_certs':true}"
:: JSON данные также могут быть переданы как путь к файлу .json
oint grpc ОбработатьДвунаправленныйПоток ^
--conn "{'address':'https://grpcb.in:9001','proto':{'main.proto':'https://hut.openintegrations.dev/test_data/grpcbin_with_import.proto','my_types.proto':'https://hut.openintegrations.dev/test_data/mt.proto'}}" ^
--service "grpcbin.GRPCBin" ^
--method "DummyBidirectionalStreamStream" ^
--exch "[{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null,{'f_string':'Test message','f_bool':true,'f_strings':['one','two','three'],'f_sub':{'f_string':'Nested value'}},null]" ^
--tls "{'use_tls':true,'accept_invalid_certs':true}"
Результат
{
"result": true,
"finish_sending": {
"result": true
},
"final_retrieval": {
"error": "Closed",
"result": false
},
"data": [
{
"f_bool": true,
"f_bools": [],
"f_bytes": {
"BYTES": ""
},
"f_bytess": [],
"f_enum": "ENUM_0",
"f_enums": [],
"f_float": 0,
"f_floats": [],
"f_int32": 0,
"f_int32s": [],
"f_int64": 0,
"f_int64s": [],
"f_string": "Test message",
"f_strings": [
"one",
"two",
"three"
],
"f_sub": {
"f_string": "Nested value"
},
"f_subs": []
},
{
"f_bool": true,
"f_bools": [],
"f_bytes": {
"BYTES": ""
},
"f_bytess": [],
"f_enum": "ENUM_0",
"f_enums": [],
"f_float": 0,
"f_floats": [],
"f_int32": 0,
"f_int32s": [],
"f_int64": 0,
"f_int64s": [],
"f_string": "Test message",
"f_strings": [
"one",
"two",
"three"
],
"f_sub": {
"f_string": "Nested value"
},
"f_subs": []
},
{
"f_bool": true,
"f_bools": [],
"f_bytes": {
"BYTES": ""
},
"f_bytess": [],
"f_enum": "ENUM_0",
"f_enums": [],
"f_float": 0,
"f_floats": [],
"f_int32": 0,
"f_int32s": [],
"f_int64": 0,
"f_int64s": [],
"f_string": "Test message",
"f_strings": [
"one",
"two",
"three"
],
"f_sub": {
"f_string": "Nested value"
},
"f_subs": []
},
{
"f_bool": true,
"f_bools": [],
"f_bytes": {
"BYTES": ""
},
"f_bytess": [],
"f_enum": "ENUM_0",
"f_enums": [],
"f_float": 0,
"f_floats": [],
"f_int32": 0,
"f_int32s": [],
"f_int64": 0,
"f_int64s": [],
"f_string": "Test message",
"f_strings": [
"one",
"two",
"three"
],
"f_sub": {
"f_string": "Nested value"
},
"f_subs": []
},
{
"f_bool": true,
"f_bools": [],
"f_bytes": {
"BYTES": ""
},
"f_bytess": [],
"f_enum": "ENUM_0",
"f_enums": [],
"f_float": 0,
"f_floats": [],
"f_int32": 0,
"f_int32s": [],
"f_int64": 0,
"f_int64s": [],
"f_string": "Test message",
"f_strings": [
"one",
"two",
"three"
],
"f_sub": {
"f_string": "Nested value"
},
"f_subs": []
},
{
"f_bool": true,
"f_bools": [],
"f_bytes": {
"BYTES": ""
},
"f_bytess": [],
"f_enum": "ENUM_0",
"f_enums": [],
"f_float": 0,
...