Azure SignalR 服务 | Asp.Net 网站 Api |控制台客户端
Azure SignalR Service | Asp.Net Web Api | Console client
我能够使用其访问密钥从 Asp.Net Web 应用程序连接到 Azure SignalR 服务。 Asp.Net Web App 在 Azure SignalR 服务上创建并托管一个中心。我创建了一个 c# 控制台客户端并使用 Microsoft.AspNetCore.SignalR.Client
库连接到 Asp.Net Web 应用程序的 SignalR Hub。
问题:
我是否应该始终实现像 Asp.Net Web 应用程序这样的中间件并依靠它来创建和通过 Hub 进行通信?
是的,根据萨马拉和其他来源,我们有几个选择。
- 从控制台应用程序使用 REST API 来托管集线器 (Azure SignalR) 作为服务器,并作为门户服务于客户端\订阅者。这支持单向消息传递。
- 使用 Azure Functions 中的 REST API(使其无服务器)以托管集线器(Azure SignalR)作为服务器并将客户端\订阅者作为门户服务。这支持单向消息传递。
- 使用 auth() 层从 Asp.Net 托管 Web API 托管一个集线器 (Azure SignalR),并通过 API 迎合客户。这支持完全成熟的双向消息传递。
是否无法从 c# 控制台直接与 Azure SignalR 服务对话以创建集线器并通过集线器发送我的消息?
- 从控制台应用程序使用 REST API 来托管集线器 (Azure SignalR) 作为服务器,并作为门户服务于客户端\订阅者。这支持单向消息传递。
- 使用 Azure Functions 中的 REST API(使其无服务器)以托管集线器(Azure SignalR)作为服务器并将客户端\订阅者作为门户服务。这支持单向消息传递。
我是 Azure SignalR 服务的新手;请协助我解决上述问题。我的问题几乎得到了解答。希望对您有所帮助!
P.S。人们没有真正的答案,远离
我想我更理解你的问题了。我想你是在谈论示例代码吗? 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;
});
});
有一点需要牢记,以及为什么这些示例中的大多数都在 SignalR 服务的顶部添加了一个 API 层。为了创建与服务的连接,您使用了密钥。如果您将其嵌入您的控制台应用程序然后分发它,任何拥有该应用程序的人现在都可以通过提取密钥 来控制您的所有集线器。除非你相信你的所有用户都具有这种能力,否则添加一个 API 层是可行的方法 - 用户向 API 进行身份验证,然后 API 决定他们对中心。
我能够使用其访问密钥从 Asp.Net Web 应用程序连接到 Azure SignalR 服务。 Asp.Net Web App 在 Azure SignalR 服务上创建并托管一个中心。我创建了一个 c# 控制台客户端并使用 Microsoft.AspNetCore.SignalR.Client
库连接到 Asp.Net Web 应用程序的 SignalR Hub。
问题:
我是否应该始终实现像 Asp.Net Web 应用程序这样的中间件并依靠它来创建和通过 Hub 进行通信? 是的,根据萨马拉和其他来源,我们有几个选择。
- 从控制台应用程序使用 REST API 来托管集线器 (Azure SignalR) 作为服务器,并作为门户服务于客户端\订阅者。这支持单向消息传递。
- 使用 Azure Functions 中的 REST API(使其无服务器)以托管集线器(Azure SignalR)作为服务器并将客户端\订阅者作为门户服务。这支持单向消息传递。
- 使用 auth() 层从 Asp.Net 托管 Web API 托管一个集线器 (Azure SignalR),并通过 API 迎合客户。这支持完全成熟的双向消息传递。
是否无法从 c# 控制台直接与 Azure SignalR 服务对话以创建集线器并通过集线器发送我的消息?
- 从控制台应用程序使用 REST API 来托管集线器 (Azure SignalR) 作为服务器,并作为门户服务于客户端\订阅者。这支持单向消息传递。
- 使用 Azure Functions 中的 REST API(使其无服务器)以托管集线器(Azure SignalR)作为服务器并将客户端\订阅者作为门户服务。这支持单向消息传递。
我是 Azure SignalR 服务的新手;请协助我解决上述问题。我的问题几乎得到了解答。希望对您有所帮助!
P.S。人们没有真正的答案,远离
我想我更理解你的问题了。我想你是在谈论示例代码吗? 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;
});
});
有一点需要牢记,以及为什么这些示例中的大多数都在 SignalR 服务的顶部添加了一个 API 层。为了创建与服务的连接,您使用了密钥。如果您将其嵌入您的控制台应用程序然后分发它,任何拥有该应用程序的人现在都可以通过提取密钥 来控制您的所有集线器。除非你相信你的所有用户都具有这种能力,否则添加一个 API 层是可行的方法 - 用户向 API 进行身份验证,然后 API 决定他们对中心。