dev*_*qon 5 asp.net-mvc-4 signalr
我正在尝试实现从一个客户端到另一个客户端的聊天.在搜索时,我遇到了有趣的SignalR库,用于服务器推送操作.
假设客户端向另一个客户端发送消息,但该客户端此时处于脱机状态.当他回到网上时,他应该看到他在离线时收到消息的通知.SignalR会将其对话存储在某处吗?如何在我的数据库中存储会话?如何让客户端在收到离线消息时看到通知?
任何人都可以为我提供这样的教程吗?我只找到了在线聊天教程.
亲切的问候
the*_*000 12
SignalR本身不提供离线消息传递.
您必须将脱机消息存储在数据库或某个位置,并提供逻辑以通知用户有待处理的消息.
一个天真的实现:
public class ClientHub : Hub
{
public SendMessage(string message, string targetUserName)
{
var userName = Context.User.Identity.Name;
if (HubHelper.IsConnected(targetUserName))
{
Clients.User(targetUserName).sendMessage(message);
}
else
{
DataAccess.InsertPendingMessage(userName, targetUserName, message);
}
}
public SendPendingMessages()
{
// Get pending messages for user and send it
var meesages = DataAccess.GetPendingMessages(userName);
Clients.User(userName).processPendingMessages(messages);
}
public override Task OnConnected()
{
var connected = base.OnConnected();
var userName = Context.User.Identity.Name;
if (!string.IsNullOrWhiteSpace(userName))
{
HubHelper.RegisterClient(userName, Context.ConnectionId);
SendPendingMessages();
}
return connected;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码假定实现以下内容: