Я пытаюсь внедрить потоковую передачу 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#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Потоковая потоковая передача Polars: Parquet Parquet на основе Shift (-1)
Anonymous » » в форуме Python - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Двунаправленная потоковая передача gRpc зависает при большом количестве сообщений
Anonymous » » в форуме C# - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-