多平台
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,先把服務端運行起來再運行客戶端,同樣是沒有絲毫的問題