服务器端
安装使用
程序运行环境 .netFramwork 4.5及以上版本
SignalR 可通过Owin Hosting,也可以通过IIS Hosting
owin selfhost
- 安装包 pacakge list
install-package Microsoft.aspnet.signalr.SelfHost
install-package Microsoft.owin.hosting
install-package Microsoft.owin.cors
-
配置startup.cs
- hub为单实例
public class Startup
{
private log4net.ILog loger = log4net.LogManager.GetLogger(typeof(Startup));
//单例hub才对
Hub.MessageHub hub = new Hub.MessageHub();
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver.Register(typeof(Hub.MessageHub), () => hub);
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
loger.DebugFormat("启动Startup服务器...");
//app.Map("/signalr", map =>
//{
// //添加 允许 跨域访问 规则
// app.UseCors(CorsOptions.AllowAll);
// var hubConfiguration = new HubConfiguration
// {
// EnableDetailedErrors=true,
// EnableJSONP=true
// };
// map.MapSignalR(hubConfiguration);
//});
}
- hub多实例(默认)
public class Startup1
{
public void Configuration(IAppBuilder app)
{
//跨域设置
app.UseCors(CorsOptions.AllowAll);
//路由注册(使用默认)
app.MapSignalR();
}
}
- 启动
class Program
{
static IDisposable signalR;
static void Main(string[] args)
{
string _signalRURI = "http://+:8000"
try
{
signalR = WebApp.Start<Startup>(_signalRURI);
}
catch (TargetInvocationException texs)
{
loger.Error("SignalR服务器启动失败! " );
}
catch (Exception ex)
{
loger.Error("SignalR服务器启动出错! " );
}
Console.ReadKey();
}
}
客户端调用
1、web客户端调用
Install-Package Microsoft.AspNet.SignalR.JS
<!--依赖文件-->
<script src="../Scripts/jquery-1.6.4.min.js"></script>
<script src="../Scripts/jquery.signalR-2.2.1.min.js"></script>
<!--加载hub客户端js代理 -->
<script src="http://localhost:8000/signalr/hubs"></script>
//创建 MsgHub js实例
$.connection.hub.url = "http://localhost:8000/signalr";
var msgHub = $.connection.msgHub;
//启用客户端日志
$.connection.hub.logging = true;
//注册客户端接收事件处理
msgHub.client.receive = function (content) {
console.info(content);
$('#result').append('服务器推送内容:'+content).append('<br />');
}
//启动监听
$.connection.hub.start().done(function () {
//调用服务端发送消息
$('#btnOne').click(function () {
var text = $('#txtOne').val();
msgHub.server.send(text);
});
});
2、其他桌面客户端调用 wpf,console、winform client
Install-Package Microsoft.AspNet.SignalR.Client
//SignalR.Client简单实例
static void Main(string[] args)
{
//创建客户端连接
string url = "http://localhost:8000";
var con = new HubConnection(url);
//实例化客户端代理
IHubProxy msgProxy = con.CreateHubProxy("MsgHub");
//注册客户端接收
msgProxy.On("receive", (content) =>
{
Console.WriteLine("服务器推送内容:" + content);
});
//启动监听并等待
con.Start().Wait();
//客户端,发送内容
msgProxy.Invoke("Send", "ConsonleClient,上线了");
Console.WriteLine("ConsonleClient,启动成功");
Console.Read();
}