我有以下SignalR集线器类(仅显示顶部):
[HubName("DataServiceHub")] public class DataServiceHub : Hub,IDataServiceHub,IDisconnect,IConnected { . .
然后,我使用Main函数中的以下代码在Console App中自托管集线器:
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 / signalsr / 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>
请注意,我们正在使用Kendo,因此jquery js include是通过它.
然后在$(document).ready(function(){我有以下内容:
jQuery.support.cors = true; var connection = $.hubConnection('http://localhost:4322'); var hub = connection.dataServiceHub;
但’hub’总是’未定义’.
我在这里错过了什么?
如果这是跨域问题 – 我该如何解决?