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呢。