У нас есть сервер SSE, отправляющий события, как показано ниже:
...
event: event_id
data: AQAAAAAAKTUMAQAAAWuY4NWAAAAAAAAAAwcAAD9IAAAAAAApNQ0BAAABa5jlaWAAAAAAAAADAQAA
data: PVQAAAAAACk1DgEAAAFrmOVpYAAAAAAAAAMDAAA/SAAAAAAAKTUPAQAAAWuY5WlgAAAAAAAAAwUA
data: AEE8AAAAAAApNRABAAABa5jlaWAAAAAAAAADBwAAPuQAAAAAACk1EQEAAAFrmOn9QAAAAAAAAAMB
data: AAA88AAAAAAAKTUSAQAAAWuY6f1AAAAAAAAAAwMAAD7kAAAAAAApNRMBAAABa5jp/UAAAAAAAAAD
data: BQAAQNgAAAAAACk1FAEAAAFrmOn9QAAAAAAAAAMHAAA+5AAAAAAAKTUVAQAAAWuY7pEgAAAAAAAA
data: AwEAAD24
...
Два вопроса:
Когда мы используем ServerEventClient, мы можем получить только последнюю строку данных события «AwEAAD24»
Как изменить параметр запроса EventStreamPath, когда клиент получает автоматическое переподключение. Нам нужно отправить параметр "from" для запроса новых данных с сервера SSE. В противном случае сервер SSE будет по-прежнему передавать старые данные клиенту.
Пример кода:
public void testSSE() {
var client = new ServerEventsClient(SSEServerUri) {
EventStreamPath = streamUri + queryParam,
OnConnect = con => Console.WriteLine(con.Data),
OnHeartbeat = () => Console.WriteLine("heartbeat"),
OnMessage = e => Console.WriteLine("message data: " + e.data),
OnException = exp => printerror(exp.Message)
};
client.Start();
Thread.Sleep(Timeout.Infinite);
}
результат:
...
message data: AwEAAD24
...