Я пытаюсь внедрить потоковую передачу RPC на стороне сервера для отправки сообщений с сервера на клиент. < /p>
rpc CheckSystem(CheckSystemRequest) returns (stream CheckSystemResponse) {}
< /code>
код сервера: < /p>
public override Task CheckSystem(CheckSystemRequest request, IServerStreamWriter responseStream, ServerCallContext context) {
return Task.Run(async () => {
for(int i = 1; i
Клиентский код: < /p>
public static async Task TestAsync() {
try {
using (var call = client.CheckSystem(new CheckSystemRequest { Code = "1" })) {
var responseStream = call.ResponseStream;
while (await responseStream.MoveNext()) {
var current = responseStream.Current;
Console.WriteLine($"{DateTime.Now}: Received: Type = {current.Type}");
}
}
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
< /code>
После запуска я вижу, что на стороне сервера сообщение отправляется каждые 10 секунд.
Screenshot #1. < /p>
13.12.2019 **16:31:31**: Sent 1
13.12.2019 **16:31:41**: Sent 2
13.12.2019 16:31:51: Sent 3
13.12.2019 16:32:01: Sent 4
13.12.2019 16:32:11: Sent 5
13.12.2019 16:32:21: Sent 6
13.12.2019 16:32:31: Sent 7
13.12.2019 16:32:41: Sent 8
13.12.2019 16:32:51: Sent 9
13.12.2019 16:33:01: Sent 10
< /code>
Но клиент начинает обрабатывать первое сообщение только после того, как сервер отправляет второе.
Screenshot #2 < /p>
13.12.2019 **16:31:41**: Received: Type = 1
13.12.2019 **16:31:41**: Received: Type = 2
13.12.2019 16:31:51: Received: Type = 3
13.12.2019 16:32:01: Received: Type = 4
13.12.2019 16:32:11: Received: Type = 5
13.12.2019 16:32:21: Received: Type = 6
13.12.2019 16:32:31: Received: Type = 7
13.12.2019 16:32:41: Received: Type = 8
13.12.2019 16:32:51: Received: Type = 9
13.12.2019 16:33:01: Received: Type = 10
< /code>
Что может быть причиной такого поведения? И как это можно исправить?
Подробнее здесь: https://stackoverflow.com/questions/593 ... message-on
C# grpc-серверная потоковая передача RPC. Клиент получил первое сообщение только со вторым ⇐ C#
Место общения программистов C#
1754493364
Anonymous
Я пытаюсь внедрить потоковую передачу RPC на стороне сервера для отправки сообщений с сервера на клиент. < /p>
rpc CheckSystem(CheckSystemRequest) returns (stream CheckSystemResponse) {}
< /code>
код сервера: < /p>
public override Task CheckSystem(CheckSystemRequest request, IServerStreamWriter responseStream, ServerCallContext context) {
return Task.Run(async () => {
for(int i = 1; i
Клиентский код: < /p>
public static async Task TestAsync() {
try {
using (var call = client.CheckSystem(new CheckSystemRequest { Code = "1" })) {
var responseStream = call.ResponseStream;
while (await responseStream.MoveNext()) {
var current = responseStream.Current;
Console.WriteLine($"{DateTime.Now}: Received: Type = {current.Type}");
}
}
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
< /code>
После запуска я вижу, что на стороне сервера сообщение отправляется каждые 10 секунд.
Screenshot #1. < /p>
13.12.2019 **16:31:31**: Sent 1
13.12.2019 **16:31:41**: Sent 2
13.12.2019 16:31:51: Sent 3
13.12.2019 16:32:01: Sent 4
13.12.2019 16:32:11: Sent 5
13.12.2019 16:32:21: Sent 6
13.12.2019 16:32:31: Sent 7
13.12.2019 16:32:41: Sent 8
13.12.2019 16:32:51: Sent 9
13.12.2019 16:33:01: Sent 10
< /code>
Но клиент начинает обрабатывать первое сообщение только после того, как сервер отправляет второе.
Screenshot #2 < /p>
13.12.2019 **16:31:41**: Received: Type = 1
13.12.2019 **16:31:41**: Received: Type = 2
13.12.2019 16:31:51: Received: Type = 3
13.12.2019 16:32:01: Received: Type = 4
13.12.2019 16:32:11: Received: Type = 5
13.12.2019 16:32:21: Received: Type = 6
13.12.2019 16:32:31: Received: Type = 7
13.12.2019 16:32:41: Received: Type = 8
13.12.2019 16:32:51: Received: Type = 9
13.12.2019 16:33:01: Received: Type = 10
< /code>
Что может быть причиной такого поведения? И как это можно исправить?
Подробнее здесь: [url]https://stackoverflow.com/questions/59323865/c-sharp-grpc-server-side-streaming-rpc-the-client-received-the-first-message-on[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия