嗨,大卫,
我已经像facebook聊天一样使用signalR制作了聊天应用程序,现在我想将聊天对话数据保存到数据库中,并想为其对应的聊天室显示该历史记录,请您指导如何存档? signalR 是否支持与 sql server 通信?
另外,您能否指导我如何维护连接 ID,以便我可以像 Facebook 聊天应用程序一样在回发后重新初始化聊天。
首先,如果您正在寻求帮助,只需说您正在寻求帮助。 您不知道某些事情,这并不意味着 SignalR 不支持它或这是一个问题。
关键是你不关心 conn id。 你必须用你自己一致的唯一键来映射它。 同样,我建议不要维护 conn id。 最好是随机的。 如果必须维护 conn id,那么您可以覆盖默认的 conn id 生成器。
嗨,ZeroHacker,
感谢您的回复,这是否意味着我们可以传递我们自己的连接 ID? 回帖后我们可以继续聊天吗? 我的意思是在将所有细节重新分配到特定房间后,它会继续聊天吗??
以下是聊天服务器的示例方法:
``` C#
公共覆盖 System.Threading.Tasks.Task OnConnected()
{
// 获取用户 ID。 假设用户在连接聊天之前已登录,并且用户 ID 保存在会话中。
string UserID = (string)HttpContext.Current.Session["userid"];
// Get ChatHistory and call the client function. See below
this.GetHistory(UserID);
// Get ConnID
string ConnID = Context.ConnectionId;
// Save them in DB. You got to create a DB class to handle this. (Optional)
DB.UpdateConnID(UserID, ConnID);
}
private void GetHistory(UserID)
{
// Get Chat History from DB. You got to create a DB class to handle this.
string History = DB.GetChatHistory(UserID);
// Send Chat History to Client. You got to create chatHistory handler in Client side.
Clients.Caller.chatHistory(History );
}
// This method is to be called by Client
public void Chat(string Message)
{
// Get UserID. Assumed the user is logged before connecting to chat and userid is saved in session.
string UserID = (string)HttpContext.Current.Session["userid"];
// Save Chat in DB. You got to create a DB class to handle this
DB.SaveChat(UserID, Message);
// Send Chat Message to All connected Clients. You got to create chatMessage handler in Client side.
Clients.All.chatMessage(Message);
}
``
注意:我刚刚在这里写下了。 还没有测试。
嗨,ZeroHacker,
再次非常感谢,你有任何粗略的例子吗? 我不希望让它 100% 工作,我只是为了参考目的。
非常感谢
我们可以把它带到 StackOverflow 吗? 这在 SignalR 中不是问题,在 SO 中比在这里受益更多。
@niravpatel我为你写了 3 种方法。 为什么要求更多? 如果您不知道如何保存到 DB,那么您最好去图书馆找一些 C# 书籍。 在询问之前,您应该首先尝试基于它们。 让我们的话题到此结束。
@raybooysen完全同意。
关闭
最有用的评论
首先,如果您正在寻求帮助,只需说您正在寻求帮助。 您不知道某些事情,这并不意味着 SignalR 不支持它或这是一个问题。
关键是你不关心 conn id。 你必须用你自己一致的唯一键来映射它。 同样,我建议不要维护 conn id。 最好是随机的。 如果必须维护 conn id,那么您可以覆盖默认的 conn id 生成器。