При отправке сообщений без пробелов сообщение правильно транслируется на все клиенты. Однако когда я добавляю пробел, я получаю исключение («OnException») от клиента C#. Он отлично работает с клиентом JS (не ServiceStack). Неважно, где и сколько пробелов, один пробел приводит к сбою клиента.
Трассировка стека:
Код: Выделить всё
System.ArgumentException: Invalid Selector '{"characterId":"6ed46423-6d70-4aae-a37f-4f5e799d326b","message":"\"hello'
at ServiceStack.ServerEventsClient.ToTypedMessage(ServerEventMessage e) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack/src/ServiceStack.Client/ServerEventsClient.cs:line 804
at ServiceStack.ServerEventsClient.ProcessEventMessage(ServerEventMessage e) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack/src/ServiceStack.Client/ServerEventsClient.cs:line 859
at ServiceStack.ServerEventsClient.c__DisplayClass115_0.
b__0(Task`1 t) in /home/runner/work/ServiceStack/ServiceStack/ServiceStack/src/ServiceStack.Client/ServerEventsClient.cs:line 725
Сообщение представляет собой DTO с Guid CharacterId и строковым сообщением< /code>.
Код:
Сервер Java Springboot:
Код: Выделить всё
@PostMapping(path = "/message")
public boolean sendMessage(@RequestBody DTOs.MessageDTO request) {
for(SseEmitter sseEmitter: emitters){
try {
sseEmitter.send(request);
} catch (IOException e) {
throw new RuntimeException(e);
}
});
return true;
}
Код: Выделить всё
private ServerEventsClient _create_sse_client()
{
baseUri = $"...";
return new ServerEventsClient(baseUri)
{
OnMessage = this._events.Enqueue,
OnException = errors.Add,
OnCommand = this._commands.Enqueue,
AllRequestFilters = req =>
{
req.Method = HttpMethod.Get;
req.AddHeader("Accept", "text/event-stream");
},
};
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ings-conta