Signalr 未捕获类型错误:无法读取属性';服务器';未定义的
我试图在开发Chrome扩展时利用Signaler。我可以成功运行,但当我尝试将客户端从网页更改为chrome Extension时,遇到了一些问题。我定义的连接与下面的示例相同: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(
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在客户端自动更改为MyHub1和Hello()更改为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。在此处签出样本: