SignalR を .NET(WPF)からも使ってみた

執筆日時:

(SignalR 0.5.3 の)JavaScript のクライアントは .NET 向けの各種クライアントとほぼ同じ API となっています。

SignalR 0.5.3 で変わった JavaScript クライアント - しばやん雑記

そういえば、前回(SignalR Deep Dive ! に参加してきた+WebMatrix で SignalR 動かしてみた - だるろぐ).NET から呼んでみるのを忘れてたよ。「ほぼ同じ」らしいのでこっちも試してみよう。

WPF アプリケーションを作って、 NuGet で SignalR.Client をインストール。 Hub (サーバー側)のコードは前回のそのまま。

public partial class MainWindow : Window
{
HubConnection connection;
IHubProxy sample;

public MainWindow() { InitializeComponent();

// サーバーに接続して sample ハブをげっと connection = new HubConnection("http://localhost:63112/"); sample = connection.CreateProxy("sample"); connection.Start(); /* この3つは順番を守ること! */

// sample ハブで Echo() が呼ばれたら…… sample.On("Echo", data => // 返り値をもらって UI スレッドで textBox につっこむ Dispatcher.BeginInvoke( new Action(() => { textBox.Text = data; }) ) ); }

private void buttonAdd_Click(object sender, RoutedEventArgs e) { // sample Hub の Add() を呼ぶ sample.Invoke("Add", ".NET! "); }

private void buttonClear_Click(object sender, RoutedEventArgs e) { // sample Hub の Clear() を呼ぶ sample.Invoke("Clear"); } }

XAML は省略。ほんまに JavaScript の時と変わらないな。ただ、プロキシの取得と接続のスタートを逆にすると例外が発生する(JavaScript の場合は呼び出し順序はどっちでもいいみたい)。

f:id:daruyanagi:20120831112128p:plain