Я думаю, что понимаю ваш вопрос немного лучше. Я думаю, что вы говорите о примере кода здесь? https://github.com/aspnet/AzureSignalR-samples/tree/master/samples/Serverless
Если вы хотите создать приложение для чата, вы должны изменить код, чтобы объединить две функции. Я смог сделать это, обновив program.cs для запуска обоих кодовых наборов. Это не полный клиент чата - все сообщения все еще говорят, что они получены от другого пользователя, но я надеюсь, что это даст вам лучшее представление о том, как это работает.
app.Command("client", cmd =>
{
cmd.Description = "Start a client to listen to the service";
cmd.HelpOption("--help");
var userId = cmd.Argument("<userId>", "Set User ID");
cmd.OnExecute(async () =>
{
var connectionString = connectionStringOption.Value() ?? configuration["Azure:SignalR:ConnectionString"];
if (string.IsNullOrEmpty(connectionString) || !hubOption.HasValue())
{
MissOptions();
return 0;
}
var client = new ClientHandler(connectionString, hubOption.Value(), userId.Value);
await client.StartAsync();
//Add the server to the client so we can talk both ways
var server = new ServerHandler(connectionString, hubOption.Value());
await server.Start();
Console.ReadLine();
await client.DisposeAsync();
return 0;
});
});
Есть что-то, что нужно иметь в виду, и почему в большинстве этих примеров добавлен уровень API поверх сервиса SignalR. Чтобы создать соединение с услугой, вы используете ключ. Если вы встраиваете это в консольное приложение, а затем распределяете его, любой, у кого есть приложение, теперь может контролировать все ваши концентраторы, извлекая ключ . Если вы не доверяете всем своим пользователям эту мощь, то добавление уровня API - это путь, по которому пользователь проходит аутентификацию в API, и API решает, какие разрешения они имеют в концентраторе.