我试图在我们目前正在进行的项目中使用SignalR库。我读了一些博客,看了一些stackoverflow的答案,检查了signalr的文档,但没有任何运气。下面的代码只是我试图使其工作的最简单的示例。
我使用SignalR 1.0.1与枢纽,jquery 2.0.0, ASP。.NET MVC2, .NET Framework 4,信号/集线器通过Url.Content("~/signalr/hubs")
加载。在页面的源代码中,当我点击signalr/hubs,我可以看到signalr生成的js代码。
我还将RouteTable.Routes.MapHubs();
添加到Application_Start()的开头我的中心:
public class Chat : Hub
{
public void Send()
{
Clients.All.addMessage();
}
}
客户端代码在jQuery文档准备块
$(function() {
var chat = $.connection.chat;
chat.client.addMessage = function() {
console.log("hello here");
};
$.connection.hub.logging = true;
$.connection.hub.error(function() {
console.log("An error occured1");
});
$.connection.hub.start()
.done(function() {
alert("Now connected!");
})
.fail(function() {
console.log("Could not connect");
});
});
问题是: http://localhost/EC/signalr/negotiate
返回状态200 OK,但响应体为空,因此没有创建连接。
我试过设置runAllManagedModulesForAllRequests="true"
,但没有改变任何东西,也试过$.connection.hub.url = 'http://localhost/EC/signalr';
,但再次没有效果。
我还将我的hubs类保存在hubs文件夹或项目的根目录中。
我将感谢任何帮助,因为我已经用尽了想法,如何以及在哪里寻找解决方案。
@suleks,
您的页面是否缺少"signalr/hubs"脚本?
<script src="signalr/hubs" type="text/javascript"></script>
好的,所以我们的服务器出现了问题,阻塞了所有内容。谢谢你调查我们的问题。