Signalr 未捕获类型错误:无法读取属性';服务器';未定义的

Signalr 未捕获类型错误:无法读取属性';服务器';未定义的,signalr,Signalr,我试图在开发Chrome扩展时利用Signaler。我可以成功运行,但当我尝试将客户端从网页更改为chrome Extension时,遇到了一些问题。我定义的连接与下面的示例相同: var chat = $.connection.myHub; console.log("start connect"); $.connection.hub.start().done(function () { // Call the Send method on the hub. console.log(

我试图在开发Chrome扩展时利用Signaler。我可以成功运行,但当我尝试将客户端从网页更改为chrome Extension时,遇到了一些问题。我定义的连接与下面的示例相同:

var chat = $.connection.myHub;

console.log("start connect");
$.connection.hub.start().done(function () {
  // Call the Send method on the hub. 
  console.log("Test");
  //chat.server.send("extension", "start");
  chat.server.send("succ");
 });
但我总是遇到这样的错误:
未捕获类型错误:无法读取未定义的属性“server”


我已经在服务器端启用了跨域。由于调用了“chat.server”,连接似乎已成功建立。我是否错过了在我的扩展文件夹中添加一些文件/脚本?

您似乎没有引入
/signal/hubs
文件。自动生成的集线器文件将
.server
.client
属性添加到连接对象中。因此,如果您正确地包含了
/signal/hubs
文件,那么下一步就是确保您的hub包含在动态生成的JS文件中。

在我的例子中,问题是C#会自动将hub.JS中hub名称和方法的第一个字母改为小写MyHub1在客户端自动更改为MyHub1Hello()更改为Hello()

如果您有:

public class MyHub1 : Hub
{
    public void Hello()
    {
        
    }
}
在你的中心

在客户端中,必须按如下方式使用:

var simpleHubProxy = $.connection.myHub1;
$.connection.hub.start().done(function () {
    console.log("Connected.");
    simpleHubProxy.server.hello();
});

是否执行了/signalr/hubs,它是否包含“myHub”?您是对的,似乎我未能添加此
/signalr/hubs
文件。当我使用背景页面时,我可以包括
http://mysite/signalr/hubs/
很容易。但是,如果我只是使用
background.js
来执行所有逻辑,那么如何加载
/signal/hubs
?似乎它不是一个单一的js文件。我认为您最好只使用原始集线器API。在此处签出样本: