asp.net-mvc-4 – 使用信号器一对一,包括离线模式
发布时间:2020-12-16 03:59:30 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试实现从一个客户端到另一个客户端的聊天.在搜索时,我遇到了有趣的SignalR库,用于服务器推送操作. 假设客户端向另一个客户端发送消息,但该客户端此时处于脱机状态.当他回到网上时,他应该看到他在离线时收到消息的通知. SignalR会将其对话存储在某个
我正在尝试实现从一个客户端到另一个客户端的聊天.在搜索时,我遇到了有趣的SignalR库,用于服务器推送操作.
假设客户端向另一个客户端发送消息,但该客户端此时处于脱机状态.当他回到网上时,他应该看到他在离线时收到消息的通知. 任何人都可以为我提供这样的教程吗?我只找到了在线聊天教程. 亲切的问候 解决方法
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; } } 此代码假定实现以下内容: >客户端函数sendMessage显示私人消息>客户端函数processPendingMessages显示所有待处理消息> DataAccess对象,包含Get(GetPendingMessages)和Insert(InsertPendingMessage)挂起消息的方法.> Helper类HubHelper用于维护内存中的当前客户端连接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 对ASP.NET Web API的所有请求返回404错误
- asp.net – ASP .net成员资格的交易
- asp.net – 如何使用资源文件设置按钮文本
- asp.net – HTML源代码中的大型viewstate
- .net – 优雅的foreach – 在Razor构建
- asp.net-mvc – ASP.NET MVC:什么在哪里?
- asp.net – 对良好的自动化Web负载测试工具的任何建议?
- asp.net – “DataView未在System.data中标记为可序列化”是
- asp.net-web-api – 如何访问所有querystring参数作为字典
- asp.net-mvc – MVC最后一次在向用户呈现之前更改响应的机会