asp.net – 使用SignalR从Azure Worker Role向客户端发送消息
我正在运行ASP.net MVC云服务项目,该项目运行两个角色,一个Web角色和一个辅助角色. Web角色中的一个页面发起构建APK文件的请求,在服务器上构建APK文件可能需要1-5分钟.所以我们想出了以下流程:
>用户在页面上启动APK构建过程. 我们的问题现在在SignalR部分,我们如何在页面上通知用户已准备好APK并且可以下载它. 解决方法
编辑 – 为了完整起见,复制第一条评论的内容 –
我再次查看了这个问题,我知道您正在使用辅助角色来轮询队列.在这种情况下,您可以将您的工作角色设置为连接到Web角色上的APK signalR hub的.Net SignalR客户端. Web角色上的signlaR中心可以简单地将从.Net客户端收到的任何消息转发到javascript客户端(浏览器). 我建议通过以下链接 Hubs API Guide – Server 在完成其余的答案之前. 从上述两个链接可以理解,SignalR使服务器能够将数据“推送”到客户端.为了实现这一目标,您需要两件事 – > signalR hub – 这是客户可以订阅以接收消息的“中心”. 您在服务器上的signalR集线器看起来像这样 – public class APKHub : Hub { public async Task JoinGroup(string groupName) { await Groups.Add(Context.ConnectionId,groupName); Clients.Group(groupName).sendMessage(Context.User.Identity.Name + " joined."); } public Task LeaveGroup(string groupName) { return Groups.Remove(Context.ConnectionId,groupName); } public void NotifyUser(string userId) { this.Clients.Group(userId).notify(); } } 在客户端上,您的代码可能看起来像这样 – var notificationHandler = function () { var url; var user; var init = function (notificationUrl,userId) { url = notificationUrl; user = userId; connectToAPKHub(); } var connectToAPKHub = function () { $.connection.hub.url = url; var apk= $.connection.apkHub; apk.client.notifyUser = function (user) { console.log(user); } apk.client.addMessage = function (message) { console.log(message); } $.connection.hub.start().done(function () { console.log('connected to apkhub'); apk.server.joinGroup(user); }) } return { init: init } }(); notificationUrl是signalR服务器正在侦听的URL. 这将在服务器上设置您的基本集线器,您现在应该能够将客户端连接到signalR集线器.构建APK时,您可以使用以下代码(将其置于任何位置 – 例如,在控制器操作中)以实际将消息推送到相关客户端 – var apkHub = GlobalHost.ConnectionManager.GetHubContext<APKHub>(); apkHub.Clients.Group(groupName).notifyUser(groupName); groupName可以是唯一标识用户的标识符. 希望这可以帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- EXCEL文件导入时报_未在本地计算机上注册Microsoft.ACE.OLE
- asp.net-mvc-3 – 返回JsonFile的MVC3控制器
- asp.net-mvc – Asp.Net MVC – “动态”路由的最佳方法
- asp.net-mvc – MVC2 Binding不适用于Html.DropDownListFor
- asp.net-mvc – 如何手动检查模型是否有效并获取错误消息
- 如何在ASP.NET MVC中手动设置用户的角色?
- ASP.NET C#列出哪些以及何时?
- asp.net-mvc-3 – 尝试检索不存在的列的实体框架
- asp.net – .asp和.aspx页面之间的区别?
- asp.net – Web API外部承载未经授权
- asp.net – WSDL.exe工具的/ serverInterface和/
- 在ASP.NET中使用2个数据库作为会话信息
- asp.net – 用html拒绝基于Ajax JSON的帖子
- Response.Flush不工作ASP.NET
- asp.net-mvc-3 – asp.net mvc3返回原始html来查
- 如何使用ASP.NET Core自定义Tag Helper中的视图?
- ASP.NET Core中返回 json 数据首字母大小写问题
- asp.net-mvc – 注销后,如果浏览器返回按钮,那么
- 在asp.net mvc中添加JavaScript文件
- asp.net – 使用xml类型在SQL Server 2005中存储