23

クロスドメインで動作する非常にシンプルなハブ接続を取得しようとしていますが、運がありません。私は何十もの投稿を読み、言及されたすべてを実行しましたが、まだ成功していません.

私のサーバーハブはここにあります

public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.broadcastMessage(name, message);
    }
}

サーバーの MapHubs 呼び出しはこちら

RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });

私のJavaScriptクライアントはすべてここにあります

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/jquery-2.0.1.min.js"></script>
    <script src="~/Scripts/jquery.signalR-1.1.2.min.js"></script>
    <script src="/signalr/hubs"></script>
</head>
<body>
    <div class="container">
        <input type="text" id="displayname" value="Test" />
        <input type="text" id="message" value="I'm here" />
        <input type="button" id="sendmessage" value="Send" />
    </div>
    <script type="text/javascript">
        $(function ()
        {
            $.connection.hub.url = 'http://<my url>/';
            var chat = $.connection.chatHub;
            alert(chat);
            $.connection.hub.start().done(function ()
            {
                alert("Connection succeeded");
            }).fail(function ()
            {
                alert("Connection failed");
            });
        });
    </script>
</body>
</html>

問題は、接続の成功または失敗のアラートに到達せず、アラート (チャット) 呼び出しが未定義を返すことです。

$.connection.hub.url 行のいくつかの組み合わせを試しました

$.connection.hub.url = 'http://<My url>';
$.connection.hub.url = 'http://<My url>/';
$.connection.hub.url = 'http://<My url>/signalr';
$.connection.hub.url = 'http://<My url>/signalr/';

Chrome と Firebug の開発者コンソールでエラーが表示される

Uncaught Error: SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/hubs'></script>. 

同じドメインでは正常に動作します。これは本当に私を夢中にさせ始めているので、助けていただければ幸いです。

ありがとう、ジェイソン

4

1 に答える 1

21

サーバーはクロスドメインでホストされていますが、現在のドメインからハブを取得しようとしています。したがって、hubs ファイルの取得に失敗し、実際に使用するプロキシがありません (これがすべてが機能していない理由です)。

したがって、次の 2 つのオプションがあります。

  1. ハブ ファイルを手動で作成し、現在のドメインでホストします: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#manualproxy
  2. raw ハブ接続 API を使用し、signalr/hubs ファイルをまったく含めないでください。

raw ハブ接続 API の使用方法のコード スニペットを次に示します: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#nogenconnection (2 番目のコード スニペット)。

于 2013-06-01T18:37:43.157 に答える