« 2013年6月 | トップページ | 2014年10月 »

2014年2月24日 (月)

SignalR で OWIN Startup クラスがない!

サーバーから直接クライアントのJavaScriptを呼び出せる(かのように動作する)SignalRという技術を試してみました。

少し前からあった技術ですが私は初めての体験です。

このサイトを参考にして、Visual Studio 2013のVisual Basicでやってみました。

http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20

ところが途中の手順に「OWIN Startup Class」を追加するというのがあるのですが、私の環境では新規追加の一覧にこれがありません。10分くらい試行錯誤して気が付いたのですが、何とC#でプロジェクトを作成するとちゃんと「OWIN Startup クラス」というものが一覧にあるのに、VBでは存在しないではありませんか。

理由はともかく、そのような事情が分かればあとはすっぱりあきらめて空のクラスに自分でOWIN Startup クラス相当のプログラムを書くだけです。

同じところでつまづいている人のために、ここにVB版のOWIN Startup クラスを載せておきます。

Imports Microsoft.Owin
Imports Owin
<Assembly: OwinStartup(GetType(Startup))>

Public Class Startup
    Public Sub Configuration(app As IAppBuilder)
        'アプリケーションの設定方法の詳細については、http://go.microsoft.com/fwlink/?LinkID=316888 を参照してください
        app.MapSignalR() 'このサンプル以外の場合、この行は不要な場合があります。
    End Sub
End Class

このあと、なんとかSignalRの簡単なサンプルを作成できました。わかってみれば簡単に使えて良さそうですが、はじめてだと勘所がわからずに少し時間がかかりそうです。

せっかくなので、完成版のプログラムをここに載せておきます。

このプログラムを実行すると、サーバー側のServerHelloメソッドが呼び出されます。ServerHelloメソッドはクライアント側のClientHelloメソッドを呼び出します。ClientHelloメソッドはalertで画面にサーバーから受信したメッセージを表示します。

プロジェクト構成

Webアプリケーションで Emptyのテンプレートに Webフォーム 機能を追加したものを基にしました。

Capture01

▼HelloHub.vb

Option Strict Off

Imports Microsoft.AspNet.SignalR

Public Class HelloHub
    Inherits Hub

    Public Sub ServerHello(text As String)
        Clients.All.ClientHello("Hello, " & text)
    End Sub

End Class

▼HtmlPage1.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <h1>SignalR Test</h1>
    <script src="Scripts/jquery-1.10.2.min.js"></script>
    <script src="Scripts/jquery.signalR-2.0.1.min.js"></script>
    <script src="signalr/hubs"></script>
    <script>
        $(function () {

            var hub = $.connection.helloHub;

            hub.client.ClientHello = function (text) {
                alert(text);
            };

            $.connection.hub.start().done(function () {
                hub.server.serverHello("Visual Basic 中学校");
            });
        });
    </script>

</body>
</html>

▼startup.vb

※上掲のVB版OWIN Startup クラスと同じです。

▼その他

その他のファイルはまったく編集する必要はありません。

| | コメント (2) | トラックバック (0)

« 2013年6月 | トップページ | 2014年10月 »