SignalR - 启动

bdp*_*ish 13 jquery asp.net-mvc-3 signalr

我正在寻找快速而肮脏的答案.我只是在消隐,现在盯着屏幕超过12个小时后,我想我被枪杀了.

我想做一个简单的SignalR应用程序作为教程.我找到了这个例子,但我一直得到门票未定义的错误.我找到了更多,并继续得到同样的错误.我把样本项目比作我的,我找不到任何不满.

好像$.connection.ticketHub$.connection.chat正在返回未定义的对象.我需要做些什么特别的事情/signalr/hubs吗?非常感谢任何其他的想法.

Mat*_*rla 14

您需要将/ signalr/hub添加到页面,它是由SignalR动态生成的javascript,包含集线器的方法存根和集线器上的方法.

因此,如果您有一个名为的.NET-hub TestHub,SendMessage(string message)将生成一个名为javascript 的方法,以便您可以从JavaScript调用:$.connection.testHub.sendMessage("some message to server");

将浏览器指向url:/ signalr/hubs,你应该得到一个javascript.

大约150行你会看到ticketHub存根:

$.extend(signalR, {
   ticketHub: {
      _: {
          hubName: 'YourNameSpace.TicketHub',
          ignoreMembers: ['someMethod', 'namespace', 'ignoreMembers', 'callbacks'],
          connection: function () { return signalR.hub; }
      },
Run Code Online (Sandbox Code Playgroud)

您可以使用Mozilla Firebug插件或Chrome开发人员工具(扳手图标 - >工具 - >开发人员工具)查看发送到服务器和从服务器返回的内容.

编辑:SignalR阻止/信号器/集线器有一个错误正确生成(它没有生成方法存根).https://github.com/SignalR/SignalR/issues/134

EDIT2:您可能有一个不正确的脚本标记,请尝试:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

或者您没有引用SignalR.AspNet.dll程序集.如果我没记错的那就是那个将路由连接到/ signalr的程序集.

  • 我有,NuGet是否有SignalR的更新包?它只安装`SignalR.dll`而不是`SignalR.AspNet.dll`,所以添加它会给我带来错误.是否有其他东西NuGet没有安装我需要的?或者是为`SignalR.dll`安装了错误的DLL? (3认同)