読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Samurai Startup Island で Socket.IO と SignalR について話してきました

緑タイツのスーパーヒーロー*1に誘われたので、仕事帰りに Samurai Startup Island で Socket.IO と SignalR や Windows Azure について 2 時間ほど話してきました。

ちなみにこんな感じでした。写真についてはノーコメントで。*2

リアルタイムWebアプリケーション開発ワークショップ on everevo

ウェブマトリクスマンからの電話で「Mac でも SignalR 開発を体験できるようにしますよ(キリッ」と言ってしまったので、深夜 3 時ぐらいまで色々と考えた結果エンドポイントだけ用意して、クライアントサイドは jsFiddle を使う形にしました。

一応、ワークショップ形式だったので、その時に使ったサンプルを公開しておきます。API はもちろん Windows Azure クラウドサービス*3を使ってホスティングしてますよ。

1 行チャット

よくデモで行っている 1 行チャットのサンプルです。

グループ化

これもよくやっている、クライアントのグループ化のサンプルです。

タイマー

これは初めてだと思います。サーバ側でタイマーを作成して、クライアントへプッシュするだけですが、珍しい系だと思います。

まとめ

今回のデモを用意するにあたって、最初は Windows Azure Web サイトを使っていたのですが、クロスドメイン通信が発生すると Internet Explorer では long-polling になってしまうので、クラウドサービス上に構築することで WebSocket のクロスドメイン通信を使うようにしました。

ちなみに SignalR でクロスドメイン通信を行うには以下のような設定が必要になるので注意。

public class Global : System.Web.HttpApplication
{
    protected void Application_Start(object sender, EventArgs e)
    {
        var configuration = new HubConfiguration
        {
            EnableCrossDomain = true
        };

        RouteTable.Routes.MapHubs(configuration);
    }
}

SignalR の API だけ提供するサービスってのもありかなぁと思いました。Pusher みたいに。

*1:ウェブマトリクスマン

*2:触れたやつは後で屋上(

*3:WebSocket 的にもここが重要