我遇到了SignalR项目的问题。我创建了一个控制台来运行SignalR,然后尝试将它用于我的网站(目前所有都在localhost模式下运行)
SignalRSelfHost
using System;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Hosting;
using Owin;
using Microsoft.Owin.Cors;
using Microsoft.AspNet.SignalR.Hubs;
namespace SignalRSelfHost
{
class Program
{
static void Main(string[] args)
{
// This will *ONLY* bind to localhost, if you want to bind to all addresses
// use http://*:8080 to bind to all addresses.
// See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx
// for more information.
string url = "http://localhost:8080";
using (WebApp.Start(url))
{
Console.WriteLine("Server running on {0}", url);
Console.ReadLine();
}
}
}
class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
[HubName("myHub")]
public class MyHub : Hub
{
public void Send(string name, string message)
{
Clients.All.addMessage(name, message);
}
}
}
的index.html
<script src="Scripts/jquery-3.1.1.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="http://localhost:8080/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
//Set the hubs URL for the connection
//$.connection.hub.url = "http://localhost:8080/signalr";
//// Declare a proxy to reference the hub.
//var chat = $.connection.myHub;
var conn = $.hubConnection("http://localhost:8080/signalr");
var hubProxy = conn.createHubProxy('myHub');
conn.start().done(function () {
});
});
</script>
上面的一些内容已被大肆宣传,因为这也是我尝试但也没有用的东西。
任何人都可以告诉我为什么会收到错误: $。hubConnection不是函数(...)
答案 0 :(得分:2)
我不确定您的jQuery版本是否受支持。我加载了错误版本的jQuery或者多次加载时出现了奇怪的副作用。
使用JSPM时jspm resolve --only npm:jquery@2.2.4
有帮助。
这些问题起作用:
<script src="jquery-2.1.4.min.js"></script>
<script src="jquery.signalR-2.2.0.min.js"></script>
和
"jquery": "npm:jquery@2.2.4",
"ms-signalr-client": "npm:ms-signalr-client@2.2.5",
我还建议省略&#34; / signalr&#34;指定hubConnection
时的后缀。它会自动添加。
答案 1 :(得分:0)
我遇到了同样的问题。问题原来是JQuery脚本在页面底部再次运行(我正在使用的ASP.NET MVC模板的一部分),消除了SignalR-JQuery注册。确保您的HTML页面底部没有额外的脚本标记或@Scripts.Render
电话。
答案 2 :(得分:-1)
Hub:
[HubName("ContosoChatHub")]
public class ChatHub : Hub
Javascript Client: Remove the url, you don't need it.
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('ContosoChatHub');
connection.start()
.done(function(){ console.log('Now connected, connection ID=' + $.connection.hub.id); })
.fail(function(){ console.log('Could not Connect!'); });
});
The string in the createHubProxy has to be identical to the string in the HubName attribute.