我正在尝试使用signalR集线器实现推送通知。我有一个示例代码,当我运行时,我得到一个错误说 JavaScript运行时错误:'Rx'未定义
此错误出现在动态信号器/集线器文件中。 我添加了所有必要的Javascript引用,即jquery,signalR和signalr / hubs。
我缺少什么?
我的代码看起来像这样:
Global.asax文件有此
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHubs("~/signalr");
}
我的中心定义如下
[HubName("HealthCheck")]
public class MyConnectionClass : Hub
{
public static List<string> messages = new List<string>();
public void GetServiceState()
{
Clients.updateMessages(messages);
}
public void UpdateServiceState()
{
messages.Add(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
Clients.updateMessages(messages);
}
我的客户端在这样的javascript中
$(function () {
// creates a proxy to the health check hub
var healthCheckHub = $.connection.healthCheck;
// handles the callback sent from the server
healthCheckHub.updateMessages = function (data) {
$("li").remove();
$.each(data, function () {
$('#messages').append('<li>' + this + '</li>');
});
};
$("#trigger").click(function () {
healthCheckHub.server.updateServiceState();
});
// Start the connection and request current state
$.connection.hub.start(function () {
healthCheckHub.server.getServiceState();
});
});
此外,我已在客户端添加了所有必需的js引用。 我从here中选择了这个样本 这还不够,或者我错过了什么?
由于
答案 0 :(得分:0)
鉴于错误是关于Rx没有被定义,我想知道你是否安装了错误的NuGet包。听起来你安装了SignalR.Reactive。
我认为this是你真正想要的包。 (请注意,这是一个预发布版本,我认为软件包名称最近发生了变化,因此您所关注的教程可能会略微过时,这可能是导致混淆的原因。)