我是SignalR的新手,我需要在ASP.NET MVC Web应用程序中使用实时聊天。因此,我遵循了本教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-3.1&tabs=visual-studio 问题是,要将消息保存到PostgreSQL数据库中需要做什么,以便以后可以显示所有消息的列表? 非常感谢。
答案 0 :(得分:0)
您已经实现了聊天,您只需要使用管理器来实现数据库,将管理器注入到您的中心并保存/获取消息。
由于您未提供任何代码,因此请看以下示例:
使用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);
}
这只是一个示例,说明您如何执行此操作。