6

次の SignalR ハブ クラスがあります (上部のみが表示されます)。

[HubName("DataServiceHub")]
public class DataServiceHub : Hub, IDataServiceHub, IDisconnect, IConnected
{
.
.      

次に、メイン関数で次のコードを使用して、コンソール アプリでハブを自己ホストしています。

string hubsUrl = appSettingsReader.GetValue("hubsUrl", typeof(string)).ToString();
var hubsServer = new Server(hubsUrl);
hubsServer.Configuration.DisconnectTimeout = TimeSpan.Zero;
hubsServer.MapHubs();
hubsServer.Start();

hubsUrl の値は「http://localhost:4322/」です。

コンソール アプリを実行したら、Chrome で "http://localhost:4322/signalr/hubs" を参照すると、SignalR JavaScript と私のハブが下部に表示されます。

signalR.dataServiceHub = {
    _: {
        hubName: 'dataServiceHub',

HTTPS/SSL セットアップで実行されている MVC3 アプリからこのハブに接続しようとしています (つまり、サイトの URL プレフィックスは "https://localhost/" です)

私の Razor ページには、間違いなく SignalR js が含まれています。

<script src="/Website/Scripts/kendo/2012.2.710/jquery.min.js" type="text/javascript"></script>
<script src="/Website/Scripts/jquery.signalR-0.5.3.min.js" type="text/javascript"></script>
<script src="http://localhost:4322/signalr/hubs" type="text/javascript"></script>

jquery js インクルードは Kendo を使用しているため、Kendo を使用していることに注意してください。

次に、 $(document).ready(function () { に次のものがあります。

jQuery.support.cors = true;
var connection = $.hubConnection('http://localhost:4322');
var hub = connection.dataServiceHub;

しかし、「ハブ」は常に「未定義」です。

ここで何が欠けていますか?

これがクロスドメインの問題である場合 - どうすれば解決できますか?

4

4 に答える 4

5

ハブには2つのプログラミングモデルがあり、それらを混合しています。

  1. http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client
  2. http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client

これらのページの一番下までスクロールすると、各モデルでクロスドメインを使用するために何をする必要があるかを示す例があります。

于 2012-11-21T10:04:03.900 に答える
0

jquery1.6.4を参照していることを確認してください

于 2012-11-20T20:41:34.337 に答える
0

global.asaxファイルをチェックインします。routes.Clear();そこに行が存在する場合は、信号ルートがクリアされるため、その行を削除してください。

于 2013-06-25T09:47:43.673 に答える