發表文章

目前顯示的是有「SignalR」標籤的文章

在Windows Phone (WP8) 中使用SignalR

圖片
ASP.NET SignalR【幾乎】讓我想丟掉Push Notification,你就知道它把訊息傳遞這件事情弄得有多簡單方便了。在這一篇我說明一下如何在WP8中使用ASP.NET SignalR,同時也稍微解釋一下 這兩天 寫的Code。 請回憶一下我們昨天的情境: 我們在伺服器端透過ASP.NET以SignalR寫了一組服務,主要是用來做聊天室(基本上是範例啦)的功能,包含了接收用戶端傳來的訊息(姓名、聊天文字),以及把訊息主動推送給用戶端(姓名、聊天文字),這樣的功能。 而用戶端就很單純的呼叫或傾聽這個服務。呼叫Send方法可以把用戶端使用者想要說的訊息傳給伺服器端,而伺服器端收到,則執行broadcastMessage這個動態方法,把訊息推送給所有傾聽的用戶端。 透過ASP.NET SignalR要寫這個服務端的機制,很簡單。 首先,建立一個Empty WebForm專案(當然你用MVC也行,之所以用WebForm,原因在 這裡 ),接著透過NuGet引用ASP.NET SignalR: 然後在專案中Add New Item,請找到Hub Class(VS2012 Update 4或VS2013): 建立出來的Class如下: public class MyHub1 : Hub { public void Hello() { Clients.All.hello(); } } 該類別繼承自Hub,這個Hub就是SignalR服務的Bass Class,你可以在其中建立自己的Method,如上圖中的Hello。 我們修改此類別,建立一個聊天室中,接收用戶端傳來訊息的Method,名稱為Send, 其程式碼如下: public class MyHub1 : Hub //SignalR主要部分 { public void Send(string name, string message) //接收傳送來的訊息 { //傳送訊息到用戶端 Clients.All.broadcastMes

在WPF中使用SignalR

圖片
 假日,在等著接送家人的時間空檔,順便寫了一個最近工作上會用到的範例,不知是Windows Client端的技術用的人越來越少還是如何? WPF的使用情境似乎沒啥網友討論,所以範例寫完之後順便放上GitHub,如果有需要的朋友們可以參考。   大概的需求如下圖,基本上非常簡單,用WPF與WP8作為用戶端( WP8的範例 我晚一點寫),存取以asp.net SignalR所寫的服務,底下先寫WPF的部份:      會寫這個,主要的原因是,我們公司有不少先前已經搭建好的ASP.NET WebSite(Web Services),這些個WebSite是以WebForm的方式開發的,而用戶端不僅僅只有browser,還有不少WPF/Windows應用程式。所以雖然打算用SignalR做訊息傳遞,但又不是現在大家比較常見的ASP.NET MVC Site(不過說真的, 其實MVC或WebForm根本沒差)。再加上Client端(consumer)又不是Web,而是WPF(和WP8),所以稍微寫個簡單例子整理一下,好讓公司的開發人員可以接手去做後續的部分。   先把寫好的範例放在 這裡 ,有需要的朋友可以參考。   背後的需求很常見,過去我們有很多以WPF或是XAML(不管是Silverlight/WP8/Windows 8 App...etc)開發的Application,在沒有導入SignalR之前,如果需要知道伺服器端的狀態或訊息,要嘛就是走web services polling、要麼就是走socket,不然就是用push notification(但只有Windows Phone/Windows 8 App才能享用)。因此,傳統的Windows/WPF應用程式(不知道現在還有多少人在寫?),要透過http方式來接收伺服器端主動推送過來的訊息不是非常容易。(搞polling的效能當然是差到不行,又得自己做些手腳提高效能,挺費力)   但SingalR讓開發人員現在 不用大腦就 可以很輕鬆地解決這個問題。   所以我們打算在Windows/WPF/Silverlight應用程式當中快速地加入一些由伺服器端推送訊息到用戶端的功能,因此有了SignalR+WPF的這種需求,也因此有了這個範例。