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();
        }

這樣的程序運行起來是絲毫沒有問題的

image

因為owin規范,我們可以讓應用程序宿主在其它地方,只要符合owin的規范就行,這里我們可以讓它宿主在控制台應用上,我們需要在nuget上下載包

Microsoft.AspNet.SignalR.SelfHost 像下圖的這些都是要有的

image

首先創建一個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,先把服務端運行起來再運行客戶端,同樣是沒有絲毫的問題

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM