Microsoft ASP.NET SignalR
Microsoft ASP.NET SignalRはマイクロソフトのDavid Fowlerが中心となり開発が行われている、ASP.NETにリアルタイム・ウェブ機能を追加するためのライブラリである[2]。
作者 | David Fowler |
---|---|
開発元 | マイクロソフト |
最新版 |
2.4.2
/ 2021年4月30日[1] |
リポジトリ | |
プログラミング 言語 | C# |
対応OS | Microsoft Windows |
サポート状況 | Active |
種別 | イベント駆動、ネットワーク |
ライセンス | Apache License 2.0 |
公式サイト |
www |
概要
編集SignalRはサーバサイドからクライアントのブラウザのJavaScriptによるコードを呼び出しリアルタイム・ウェブを実現するために開発された。リアルタイム・ウェブの機能として、サーバー側のコードが接続されたクライアントにコンテンツをプッシュする機能を実装するために利用できる。これらの機能は以下に示すような複数の通信手段で実装されている[3]。これによりWebSocketがサポートされないブラウザからはWebSocket以外の選択肢を用いてリアルタイム通信を実現できる。これらはライブラリにより最適な通信手段が選択されるため、デベロッパが設定を行う必要はない[4]。
- WebSocket (サーバ並びにブラウザ共にサポートしていた場合は有効)
- Server Sent Events
- Forever Frame
- Ajax long polling
履歴
編集2012年11月にASP.NETの一部となることが David Fowler のブログにより発表され[5]、これに伴い直前のバージョン(0.5.3)からパッケージ構成が変更された。これらは ASP.NET 2012 Fall UpdateからRCとして提供され、マイクロソフトによるオフィシャルサポートが開始されている[6]。なお、ASP.NET and Web Tools 2012.2 により正式製品となる SignalR 1.0.0 がリリースされた[7]。
リリース日[1] | バージョン番号 | 備考 |
---|---|---|
0.5.3 | ||
2012年10月31日 | 1.0.0 Alpha1 | |
2012年11月12日 | 1.0.0 Alpha2 | |
2012年12月13日 | 1.0.0 rc1 | |
2013年01月15日 | 1.0.0 rc2 | |
2013年02月18日 | 1.0.0 | |
2013年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);
}
}
}
脚注・出典
編集- ^ a b “Microsoft ASP.NET SignalR”. Outercurve Foundation. 2018年4月6日閲覧。
- ^ “Incredibly simple real-time web for .NET”. SignalR. 2012年12月23日閲覧。
- ^ “FAQ”. SignalR. 2012年12月23日閲覧。
- ^ 松崎 剛 (2012年4月26日). “WebSocket サーバー開発 : SignalR とクロス ブラウザーへの対応”. 松崎 剛 Blog. 2012年12月23日閲覧。
- ^ David Fowler. “Microsoft ASP.NET SignalR”. Unhandled Exception. 2012年12月23日閲覧。
- ^ Scott Hanselman. “ASP.NET and Web Tools 2012.2 (Release Candidate)”. COMPUTER ZEN. 2012年12月23日閲覧。
- ^ Scott Hanselman. “Released: ASP.NET and Web Tools 2012.2 in Context”. COMPUTER ZEN. 2013年2月20日閲覧。
外部リンク
編集- 公式ウェブサイト
- SignalR (@SignalR) - X(旧Twitter)
- David Fowler (@davidfowl) - X(旧Twitter)