我是SignalR的新手,我需要在我的ASP.NET MVC Web应用程序中使用实时聊天。所以我按照这个教程来做。https:/docs.microsoft.comen-usaspnetcoretutorialssignalr?view=aspnetcore-3.1&tabs=visual-studio。问题是我需要怎么做才能把消息保存到我的PostgreSQL数据库中,以便以后可以显示所有消息的列表?谢谢你了。
你已经实现了聊天,你只需要实现数据库,用一个管理器,把管理器注入到你的集线器中,然后把消息保存起来。
由于你没有提供任何代码,请看这个例子。
用DI把数据库管理器注入到你的枢纽中去
private IDatabaseManager DatabaseManager
{
get
{
return this.serviceProvider.GetRequiredService<IDatabaseManager>();
}
}
然后你只需要在你的集线器中创建两个方法,当客户端连接到聊天时,客户端就会调用这些方法来获取消息,比如说。
public async Task JoinChatRoom(string chatRoomName)
{
await this.Groups.AddToGroupAsync(chatRoomName).ConfigureAwait(false);
Dictionary<string, string> messages = await this.DatabaseManager.GetChatHistory(chatRoomName).ConfigureAwait(false);
await this.Clients.Group(chatRoomName).BroadcastMessageAsync(messages);
}
然后在聊天中保存每条消息,比如:
public async Task SendMessageToRoom(string message, string chatRoomName)
{
await this.DatabaseManager.SaveChatHistory(chatRoomName, message).ConfigureAwait(false);
await this.Clients.Group(chatRoomName).BroadcastMessageAsync(message);
}
这只是一个例子,你可以这样做。