我正在考虑将 Azure SignalR 功能整合到我的 .net 核心 Blazor Web 应用程序中。为此,我一直在关注本教程 - Azure Signalr Serverless。这工作正常 - 我有一个运行 Azure 函数应用程序的项目,可以启动两个浏览器并进行聊天会话。我要做的是添加从已配置到我的 Blazor 应用程序中的 Azure signalR 集线器接收这些消息通知的功能。我在 Index.razor.cs 中添加了以下代码,模仿示例客户端中的 javascript 代码:
public class IndexComponent : ComponentBase
{
private HubConnection _connection;
public string Message;
protected override Task OnInitializedAsync()
{
_connection = new HubConnectionBuilder()
.WithUrl("http://localhost:7071/api")
.Build();
_connection.On<string, string>("ReceiveMessage", (user, message) =>
{
Message = $"Got message {message} from user {user}";
this.StateHasChanged();
});
_connection.StartAsync();
return base.OnInitializedAsync();
}
}
顺便说一句,示例 javascript 代码是:
const connection = new signalR.HubConnectionBuilder()
.withUrl(`${apiBaseUrl}/api`)
.configureLogging(signalR.LogLevel.Information)
.build();
connection.on('newMessage', newMessage);
connection.onclose(() => console.log('disconnected'));
console.log('connecting...');
connection.start()
.then(() => data.ready = true)
.catch(console.error);
所以问题是我的 Blazor 应用程序永远不会收到从 javascript 聊天客户端发送的任何消息通知(因此永远不会命中 _connection.On 处理程序)。我的 Blazor 代码中缺少什么?