【发布时间】:2018-04-18 02:41:30
【问题描述】:
我目前正在尝试在 .NET Web 应用程序中使用 SignalR。在查看了许多帖子/文章后,我仍然感到困惑。在页面加载时,我收到一个错误:
Uncaught TypeError: Cannot read property 'client' of undefined
我目前的实现如下:
BundleConfig.cs:
//note jquery is rendered in a shared bundle in _layout.cshtml. I have
//verified in Chrome debugger it is loaded before the bundles shown here
bundles.Add(new ScriptBundle("~/bundles/signalr").Include(
"~/Scripts/jquery.signalR-2.2.3.js"));
bundles.Add(new ScriptBundle("~/bundles/home")
.Include("~/Scripts/Home/Index.js"));
在视图中呈现的捆绑包:
@section scripts {
@Scripts.Render("~/bundles/signalr")
@Scripts.Render("~/bundles/home")
}
Startup.cs:
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
DashboardHub.cs:
namespace Sample.SignalR
{
[HubName("dashboardHub")]
public class DashboardHub : Hub
{
public void sendMessage(string message)
{
Clients.All.receiveMessage(notes);
}
}
}
Index.js:
$(function () {
var messageHub = $.connection.dashboardHub;
//send message to hub so hub updates other clients
$(document).on("submit", "#messageForm", function () {
messageHub.server.sendMessage($("#Message").val());
});
//receive message
messageHub.client.receiveMessage= function (message) {
$("#Message").empty();
$("#Message").text(notes);
}
$.connection.hub.start();
});
在线脚本中页面加载时抛出错误:
messageHub.client.receiveNotesUpdate = function (notes) {
我已经检查并仔细检查了一些事情:
- 脚本以正确的顺序呈现在页面上
- 客户端和服务器之间的集线器名称和方法名称匹配(已尝试使用
并且没有
[HubName("dashboardHub")]注释) - 集线器类是公开的
我不确定为什么 messageHub 在这一点上是未定义的。我该如何解决这个问题?
【问题讨论】:
标签: .net asp.net-mvc signalr signalr.client