この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 19123|答える: 1

[ASP.NET] mvc 4.0 SignalRの使い方(2)

[リンクをコピー]
掲載地 2017/07/05 11:15:08 | | | |
まず、プロジェクトの下に新しいHubsフォルダを作成しました

また、以下の図のようにフォルダの下に新しいPositionVehicleファイルを作成します。



プロジェクトを再構築し、ビューページで以下の2つのjsファイルを参照します



手記!!!

「/Scripts/jquery.signalR-2.2.2.min.js」ファイルはSignalRのインストールに追加され、物理ディスク上に存在します

「/signalr/hubs」はSignalRは自動的に生成されます物理ディスクには存在しません!

SignalRが生成したjsファイルを見てみよう。以下のように。

/*!
* ASP.NET SignalR JavaScriptライブラリ v2.2.2
* http://signalr.net/
*
* 著作権 (c) .NET Foundation 無断転載を禁じます。
* Apache ライセンス バージョン 2.0 のもとでライセンスされています。 ライセンス情報についてはプロジェクトのルートLicense.txtを参照してください。
*
*/

<参照パス="..\..\SignalR.Client.JS\Scripts\jquery-1.6.4.js" />
<参照パス="jquery.signalR.js" />
(関数 ($, window, undeed) {
    <param name="$" type="jQuery" />
    「厳格を使う」;

    if(typeof ($.signalR) !== "function") {
        新しいエラーを投げろ("SignalR: SignalRは読み込まれていない。 ~/signalr/js.の前にjquery.signalR-x.jsが必ず参照されているようにしてください。");
    }

    var signalR = $.signalR;

    function makeProxyCallback(hub, callback) {
        返還関数() {
            クライアントハブメソッドを呼び出します
            callback.apply(hub, $.makeArray(arguments));
        };
    }

    function registerHubProxies(instance, shouldSubscribe) {
        var key、hub、memberKey、memberValue、subscriptionMethod;

        (実例のキー) {
            もし (instance.hasOwnProperty(key)) {
                hub = インスタンス[キー];

                もし(!( hub.hubName)) {
                    クライアントハブではありません
                    続けてください;
                }

                もし(すべきサブスクライブ){
                    ハブイベントに登録したいのです
                    subscriptionMethod = hub.on;
                } そうでなければ {
                    ハブイベントの購読を解除したいのです
                    subscriptionMethod = hub.off;
                }

                ハブ内の全メンバーをループして、クライアントハブの機能を見つけて購読解除します
                for (memberKey in hub.client) {
                    if (hub.client.hasOwnProperty(memberKey)) {
                        memberValue = hub.client[memberKey];

                        もし(!$.isFunction(memberValue))) {
                            クライアントハブ機能ではありません
                            続けてください;
                        }

                        subscriptionMethod.call(hub, memberKey, makeProxyCallback(hub, memberValue));
                    }
                }
            }
        }
    }

    $.hubConnection.prototype.createHubProxies = function () {
        var プロキシ = {};
        this.starting(function () {
            ハブプロキシを加入登録として登録してください
            (インスタンス、shouldSubscribe)
            registerHubProxies(proxies, true);

            this._registerSubscribedHubs();
        }).disconnected(function () {
            「切断」時にすべてのハブプロキシのサブスクライブを解除してください。  これは、機能的なコールバックを再加えないようにするためです。
            (インスタンス、shouldSubscribe)
            registerHubProxies(プロキシ、false);
        });

        プロキシ['positionVehicle'] = this.createHubProxy('positionVehicle');
        プロキシ['positionVehicle'].client = { };
        プロキシ['positionVehicle'].server = {
            こんにちは:関数(名前){
                return proxies['positionVehicle'].invoke.apply(proxies['positionVehicle'], $.merge(["Hello"], $.makeArray(arguments))));
             }
        };

        代理を返すこと;
    };

    signalR.hub = $.hubConnection("/signalr", { useDefaultPath: false });
    $.extend(signalR, signalR.hub.createHubProxies());

}(window.jQuery, window));


では、試してみよう。コードは以下の通りだ:



検査結果は以下の通りです。


最初に受け取った2つのメッセージはどちらも私たち自身が送ったもので、私たちも受信しました。3つ目のメッセージは私が別のブラウザを開いて送ったもので、こちらも受信しました。

メッセージを受け取ったとき、それはwebsocketではなくHTTPポールでした。なぜなら、私たちのjsがエラーを報告したからです

なぜjsエラーが報告されたのかについては、次回お話しします。









先の:asp.net mvc4.0 SignalR (1) インストール
次に:エラーコード:1175。 あなたはセーフアップデートモードを使っていて、更新しようとしました...
 地主| 掲載地 2017/07/05 14:53:15 |
. .NETはSignalRを使って登場しますWebSocketハンドシェイク中のエラー
開発中に以下のエラーが発生しました:WebSocket connection to 'ws://*****' failed ed: error: webSocket handshake: net::ERR_CONNECTION_RESET。

websocketが使えない理由は、web.configファイルが設定されていないからです。 正しく動作させるには、system.webノードの下に以下の設定項目を追加する必要があります:



targetFramework は4.5に設定されています
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com