次の 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;
しかし、「ハブ」は常に「未定義」です。
ここで何が欠けていますか?
これがクロスドメインの問題である場合 - どうすれば解決できますか?