转载自:https://blog.csdn.net/LOW584710047/article/details/46225511/
项目:ASP.NET MVC 4 Web 应用程序
开发环境:VS2012
目标框架:.NET Framework 4
SignalR 主要是用于消息推送的一个框架
SignalR是什么 http://www.cnblogs.com/humble/p/3850749.html
最好的入门文章 应该是 http://www.asp.net/signalr/overview/getting-started/introduction-to-signalr 简单明了
安装时遇到的 http://www.cnblogs.com/ding2011/p/3468740.html
工具 -> 库程序包管理器 -> 程序包管理器控制台
输入下面命令 install-package Microsoft.AspNet.SignalR -Version 1.1.4
因为是 .net 4.0 用不了 SignalR 2以上的版本
安装完毕发现项目多了一个Script 文件夹
主要用到 jquery-1.6.4.min.js和jquery.signalR-1.1.4.min.js,其他可以删除
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Web;
-
using System.Web.Mvc;
-
-
//工具 -> 库程序包管理器 -> 程序包管理器控制台 输入下面命令
-
//install-package Microsoft.AspNet.SignalR -Version 1.1.4
-
using Microsoft.AspNet.SignalR;
-
-
namespace
SignalR.Controllers
-
{
-
-
//所有 hub
-
public
class
AllHub :
Hub
-
{
-
-
}
-
-
//当前 hub
-
public
class
CurHub :
Hub
-
{
-
public void SetRecGroup(string id)//设置接收组
-
{
-
this.Groups.Add(
this.Context.ConnectionId, id);
-
}
-
}
-
-
public
class
BaseController :
Controller
-
{
-
-
public ActionResult ProgressBar()
-
{
-
return View();
-
}
-
-
public ActionResult Broadcast()
-
{
-
return View();
-
}
-
-
//进度条
-
public void fnProgressBar()
-
{
-
for (
int i =
0; i <
100; i++)
-
{
-
IHubContext chat = GlobalHost.ConnectionManager.GetHubContext
();
-
chat.Clients.Group(
"clientId").notify(i);
//向指定组发送
-
System.Threading.Thread.Sleep(
100);
-
}
-
}
-
-
//广播
-
public string fnBroadcast(string msg)
-
{
-
string result =
"发送失败!";
-
try
-
{
-
IHubContext chat = GlobalHost.ConnectionManager.GetHubContext
();
-
chat.Clients.All.notice(msg);
//向所有组发送
-
result =
"发送成功!";
-
}
-
catch (Exception e)
-
{
-
result =
"发送失败!\n失败原因:\n" + e.Message;
-
}
-
return result;
-
}
-
-
}
-
}
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Web;
-
using System.Web.Http;
-
using System.Web.Mvc;
-
using System.Web.Routing;
-
-
namespace
SignalR
-
{
-
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
-
// visit http://go.microsoft.com/?LinkId=9394801
-
public
class
MvcApplication :
System.
Web.
HttpApplication
-
{
-
protected void Application_Start()
-
{
-
//添加 SignalR 映射
-
//注意执行顺序 放在最后面 会失败
-
//不添加 会生成失败
-
RouteTable.Routes.MapHubs();
-
-
AreaRegistration.RegisterAllAreas();
-
-
WebApiConfig.Register(GlobalConfiguration.Configuration);
-
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
-
RouteConfig.RegisterRoutes(RouteTable.Routes);
-
}
-
}
-
}
-
-
-
-
"server">
-
消息推送页面
-
-
-
-
-
-
"text" id=
"txtMess"/>
-
"button"
value=
"发送广播消息" id=
"btnPush"/>
-
-
-
-
这个js文件是动态生成的,项目里面是找不到该文件的
要确保 动态生成成功 必须在 Global.asax.cs 添加 映射 具体查看上面的 Global.asax.cs
另外这个只有广播的,下面这个是指定用户的,亲测可用https://blog.csdn.net/qq_35493664/article/details/77620305