Asp.Net SignalR 多平台的Client與Server
多平台
SignalR在.Net的大環境下都可以做到即時通訊,也就是說都可以使用,客戶端也不僅是js。下面就來一個控制台的Client
我們需要在nuget上下載包 Microsoft.AspNet.SignalR.Client 有了它,我就可以進行開發了
下面創建一個Hub集線器的連接,地址填的之前的集線器server,可以看到使用與js的語法類似。客戶端的服務是用on而執行服務器的方法副作用Invoke
static void Main(string[] args)
{
var hub = new HubConnection("http://localhost:23483/simpleHub");
var proxy = hub.CreateHubProxy("HubDemo");
proxy.On("helloClient", () =>
{
Console.WriteLine("收到服務器的問候");
});
hub.Start().Wait();
proxy.Invoke("HelloService").Wait();
Console.ReadKey();
}
這樣的程序運行起來是絲毫沒有問題的
因為owin規范,我們可以讓應用程序宿主在其它地方,只要符合owin的規范就行,這里我們可以讓它宿主在控制台應用上,我們需要在nuget上下載包
Microsoft.AspNet.SignalR.SelfHost 像下圖的這些都是要有的
首先創建一個Startup類 ,這里使用了cors跨域
public class Startup
{
public void Configuration(IAppBuilder app)
{
// 有關如何配置應用程序的詳細信息,請訪問 http://go.microsoft.com/fwlink/?LinkID=316888
app.UseCors(CorsOptions.AllowAll).MapSignalR();
}
}
main入口點的代碼則更加的簡單,集線器的代碼與之前的一致,就不貼出來了
class Program
{
static void Main(string[] args)
{
var host = WebApp.Start("http://localhost:8890");
Console.ReadKey();
}
}
現在我們把之前的console client的地址改成 http://localhost:8890,先把服務端運行起來再運行客戶端,同樣是沒有絲毫的問題




