【发布时间】:2015-07-26 05:49:24
【问题描述】:
我正在开发一个包含这些场景的通用方法的类库:
- 实时支持聊天(一对一私人文字聊天,与许多管理员和访客)
- 有许多用户的房间,您可以在其中发送广播和私人消息
以上这两个功能已经实现,现在我的应用程序需要保存消息。
我的问题是,在 SQL 数据库中存储聊天对话的最佳方式是什么:
每次点击发送,我都会在数据库中插入消息?
为每个用户创建一个列表,每次单击发送时,消息都会保存在发送消息的用户列表中。然后,如果用户断开连接,我将迭代消息列表并将每条消息都插入数据库中。
还有其他解决方案吗?
我现在正在做的事情如下。我有这个方法,它位于我的 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);
【问题讨论】:
-
这将得到很多意见和很少的事实。这使得这个问题超出了 SO 的范围。我建议在它们发生时插入它们,但这取决于这个应用程序是什么。
标签: sql-server signalr chat messages