У меня Asp.Net Core 2.1 с SignalR Core 1.0.1.
Я создал чат-приложение, которое описано здесь:
https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-2.1&tabs=visual-studio
Также настроили SignalR для использования Redis с помощью
services.AddSignalR().AddRedis(Configuration["ConnectionStrings:Redis"]);
Запустив сервер Redis с помощью монитора redis-cli, я вижу следующие команды:
1530086417.413730 [0 127.0.0.1:57436] "ПОДПИСАТЬСЯ" "SignalRCore.Hubs.ChatHub: connection: VAIbFqtNyPVaod18jmm_Aw"
1530086428.181854 [0 127.0.0.1:57435] "PUBLISH" "SignalRCore.Hubs.ChatHub: all" "\ x92 \ x90 \ x81 \ xa4json \ xc4W {\" type \ ": 1, \" target \ ": \ "ReceiveMessage \", \ "аргументы \": [{\ "пользователь \": \ "пользователь \", \ "сообщение \": \ "сообщение \"}]} \ x1e "
Все работает нормально до того момента, когда я хотел бы отправить какое-то сообщение из другого консольного приложения.
В этом приложении я использую ServiceStack.Redis и код следующий:
var redisManager = new RedisManagerPool(configuration["ConnectionStrings:Redis"]);
using (var client = redisManager.GetClient())
{
client.PublishMessage("SignalRCore.Hubs.ChatHub:all", "{\"type\":1,\"target\":\"ReceiveMessage\",\"arguments\":[{\"user\":\"FromConsole\",\"message\":\"Message\"}]");
}
Сообщения не обрабатываются браузером. Я предполагаю, что дело в этой дополнительной информации, которая используется для SignalR:
"\ x92 \ x90 \ x81 \ xa4json \ xc4W {...} \ x1e"
Связанные записи монитора:
1530087843.512083 [0 127.0.0.1:49480] "PUBLISH" "SignalRCore.Hubs.ChatHub: все" "{\" тип \ ": 1, \" target \ ": \" ReceiveMessage \ ", \" arguments \ " ": [{\" пользователь \ ": \" FromConsole \ "\ "сообщение \": \ "сообщение \"}]"
Есть идеи, как я могу указать эти дополнительные данные для публикации?
Возможно, мне следует использовать что-то более подходящее для моего случая вместо ServiceStack.Redis