vs2010 使用SignalR 提高B2C商城用戶體驗(三)


vs2010 使用SignalR 提高B2C商城用戶體驗(三)

    上一章節,我們的web即時通訊已經可以實現跨域了,但針對我們的需求,還希望,一些客戶端程序可以和我們的web用戶,在線聊天,所以到SignalR官網,查閱文檔,當然,還有版本限制,限制都是SignalR 2.0了,我們1.幾版本的能不能完美支持呢?

  看到了這些內容,感覺是不是很驚喜,全端支持

 

我們來看.NET Library,大概瀏覽一下,啟動VS,新建一個WinForm程序,打開nuget,找到Client的對應版本:

 Install-Package Microsoft.AspNet.SignalR.Client -Version 1.1.2

此時,我們的項目結構如下:

 

 

 

我們看到,相應的引用已經添加,只有2個類庫就可以輕松實現客戶端通信了,有空研究一下源碼,反正是開源的,這樣就可以根據源碼開發出對應的C++版本,以便注冊用戶的客戶端開發了。

此時打開From1.cs的代碼,添加如下:

namespace SignalRclient
{
    public partial class Form1 : Form
    {
        HubConnection hubConnection;
        IHubProxy hubProxy;
        private delegate void AddTxt(string msg);
        public Form1()
        {
            InitializeComponent();
            hubConnection = new HubConnection("http://localhost:2154/signalr/hubs");
            hubProxy = hubConnection.CreateHubProxy("pushHub");
            hubProxy.On<string>("addMessage", (message) => this.Invoke(new AddTxt(Show), message));
            hubConnection.Start().Wait();
        }

        private void Show(string msg)
        {
            textBox2.Text += msg + "\r\n";
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            hubProxy.Invoke("send", textBox1.Text).Wait();
        }
    }
}

代碼大概解釋一下,

   hubConnection = new HubConnection("http://localhost:2154/signalr/hubs"); 初始化對我們IM服務器的集線器連接,
  hubProxy = hubConnection.CreateHubProxy("pushHub");連接指定的集線器。
    hubProxy.On<string>("addMessage", (message) => this.Invoke(new AddTxt(Show), message)); 配置我們服務端定義的匿名方法,並設置委托方法,以供調用。
    hubProxy.Invoke("send", textBox1.Text).Wait(); send 是我們在服務端定義的發送方法,這里都是通過方法名調用的,有點類似js的eval了,是不是很強大。


代碼很簡單,也很方便的可以擴展使用,我們啟動程序,看一下效果
 


已經可以收到自己發出的信息,是不是很神奇,方法名一定要對應上,不然可收不到。
我們再啟動web端,和跨域端,看看是不是三端都可以通信了:


LOL,是不是很強大,現在,我們的商戶已經可以和買家進行即時溝通了。后面我們可以深入擴展,並將Android和IOS的系統一起合並進來,會不會超越qq呢。
 

 

 

 

 


免責聲明!

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



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