本文将介绍如何搭建简单的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负载的服务器与客户端还是相对比较简单的。