gpt4 book ai didi

sql-server - 使用signalR将聊天对话存储在sql数据库中

转载 作者:行者123 更新时间:2023-12-02 16:53:31 26 4
gpt4 key购买 nike

我正在开发一个类库,其中包含适用于这些场景的通用方法:

  • 实时支持聊天(与许多管理员和访客进行一对一的私有(private)文本聊天)
  • 拥有许多用户的房间,您可以在其中发送广播和私有(private)消息

上面这两个功能已经实现,现在我的应用程序需要保存消息。

我的问题是,在 SQL 数据库中存储聊天对话的最佳方式是什么:

  1. 每次单击“发送”时,我都会将消息插入数据库吗?

  2. 为每个用户创建一个列表,每次单击“发送”时,该消息都会保存在发送该消息的用户的列表中。然后,如果用户断开连接,我将迭代消息列表,并为每条消息将所有消息插入数据库中。

还有其他解决方案吗?

我现在正在做的事情如下。我有这个方法,位于我的 Hub 类中:

public void saveMessagetoDB(string userName, string message)
{
var ctx = new TestEntities1();

var msg = new tbl_Conversation {Msg = message};
ctx.tbl_Conversation.Add(msg);
ctx.SaveChanges();
}

我在客户端 HTML 文件上调用此方法 saveMessagetoDB,如下所示:

$('#btnSendMessage').click(function () {
var msg = $("#txtMessage").val();

if (msg.length > 0) {

var userName = $('#hUserName').val();
// <<<<<-- ***** Return to Server [ SaveMessagetoDB ] *****
objHub.server.saveMessagetoDB(userName, msg);

最佳答案

SignalR 非常适合聊天应用程序,您甚至不需要在 SQL 中存储任何内容,除非您想稍后创建聊天记录(这甚至可能没有必要)。

我建议首先使用 SignalR 进行聊天(不要对 sql 执行任何操作)。然后,一旦工作正常,您就可以根据需要将 SQL 日志记录放入 signalR 中心。

在每条消息上写入 sql 很可能是最有意义的。

关于sql-server - 使用signalR将聊天对话存储在sql数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com