本文将介绍如何搭建简单的SignalR以SelfHost负载的服务器。
上一篇已经介绍了signalr的基本知识,本篇直接贴代码!!
SelfHost服务端
1、首先创建一个console控制台项目
2、代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
using Owin;
using Microsoft.Owin.Cors;
namespace Signalr_SelfHost
{
class Program
{
static void Main(string[] args)
{
var uri = "http://127.0.0.1:9999";
using (Microsoft.Owin.Hosting.WebApp.Start<Startup>(uri))
{
Console.WriteLine(string.Format("Server stared on {0}", uri));
Console.ReadLine();
}
}
}
class Startup
{
static Hub hub;
public void Configuration(IAppBuilder app)
{
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
var configuration = new HubConfiguration();
configuration.EnableDetailedErrors = true;
app.MapSignalR("/signalr", configuration);
hub = new MyHub();
}
}
public class MyHub : Hub
{
public override Task OnConnected()
{
Console.WriteLine("有客户端连接");
return base.OnConnected();
}
//服务端的方法,客户端可以去调用
public void Send(string message)
{
string name = "BG";
//调用客户端的方法sendMessage(string s1,string s2);
Clients.All.SendMessage(name,message);
}
}
}
这样一个简单的SignalR以SelfHost负载的服务端就完成了!!
SelfHost客户端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR.Client;
namespace ClientsConsole
{
class Program
{
static void Main(string[] args)
{
string url = "http://127.0.0.1:9999";
HubConnection _conn = new HubConnection(url,true);
IHubProxy _proxy = _conn.CreateHubProxy("MyHub");
_conn.Start();
//创建客户端方法sendMessage,包含2个string参数,供服务端调用
_proxy.On<string, string>("sendMessage", (n, s) =>
{
});
_conn.StateChanged += new Action<StateChange>(tgt =>
{
if (((StateChange)tgt).NewState == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
{
//在客户端调用服务器方法Send(string msg)
_proxy.Invoke("send", "Hello");
}
});
Console.ReadLine();
}
}
}
总结:搭建SignalR以SelfHost负载的服务器与客户端还是相对比较简单的。