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

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

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

  看到了這些內容,感受是否是很驚喜,全端支持服務器

 

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

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

此時,咱們的項目結構以下:3d

 

 

 

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

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

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

代碼大概解釋一下,blog

   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呢。
相關文章
相關標籤/搜索