Microsoft ASP.NET SignalRはマイクロソフトのDavid Fowlerが中心となり開発が行われている、ASP.NETにリアルタイム・ウェブ機能を追加するためのライブラリである。
概要 SignalRはサーバサイドからクライアントのブラウザのJavaScriptによるコードを呼び出しリアルタイム・ウェブを実現するために開発された。リアルタイム・ウェブの機能として、サーバー側のコードが接続されたクライアントにコンテンツをプッシュする機能を実装するために利用できる。これらの機能は以下に示すような複数の通信手段で実装されている。これによりWebSocketがサポートされないブラウザからはWebSocket以外の選択肢を用いてリアルタイム通信を実現できる。これらはライブラリにより最適な通信手段が選択されるため、デベロッパが設定を行う必要はない。
WebSocket (サーバ並びにブラウザ共にサポートしていた場合は有効) Server Sent Events Forever Frame Ajax long polling
履歴 2012年11月にASP.NETの一部となることが David Fowler のブログにより発表され、これに伴い直前のバージョン(0.5.3)からパッケージ構成が変更された。これらは ASP.NET 2012 Fall UpdateからRCとして提供され、マイクロソフトによるオフィシャルサポートが開始されている。なお、ASP.NET and Web Tools 2012.2 により正式製品となる SignalR 1.0.0 がリリースされた。
リリース日 バージョン番号 備考 0.5.3 2012年10月31日1.0.0 Alpha12012年11月12日1.0.0 Alpha22012年12月13日1.0.0 rc12013年01月15日1.0.0 rc22013年02月18日1.0.02013年02月28日1.0.1
サンプル このサンプルは2つのテキスト ボックスに入力された値を全てのクライアントに対して配信している。
View (HTML) <div> <input type="text" id="name" /> <br /><input type="text" id="message" /> <br /><input type="button" value="投稿" id="btnPost" /> <div id="divResult"></div> </div> <script> $(function () { var ch = $.connection.Chat; $("#btnPost").click(function () { ch.server.postNewMessage($("#name").val(), $("#message").val()) }); ch.client.message = function (message) { $("#divResult").append('<div>From:' + message.From + ' : ' + message.Message + '[' + message.Date + ']' + '</div>' );
$.connection.hub.start(); }); </script>
Model (C#) namespace SampleChat.Models { public class ChatModel { public string Date { get; set; } public string From { get; set; } public string Message { get; set; }
Hub (C#) using Microsoft.AspNet.SignalR.Hubs; using SampleChat.Models; using System;
namespace SampleChat.Hubs { [HubName("Chat")] public class ChatHub : Hub { public void PostNewMessage(string from, string message)
var mdl = new ChatModel{ Date = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), From= from, Message = message
Clients.All.message(mdl);
脚注・出典
外部リンク