Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 信号器无法调用客户端侦听函数_Javascript_Jquery_Asp.net_Signalr_Signalr.client - Fatal编程技术网

Javascript 信号器无法调用客户端侦听函数

Javascript 信号器无法调用客户端侦听函数,javascript,jquery,asp.net,signalr,signalr.client,Javascript,Jquery,Asp.net,Signalr,Signalr.client,因此,我试图在一个项目中实现SignalR,我的代码如下: MtHub.cs: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.AspNet.SignalR; using Microsoft.AspNet.SignalR.Hubs; namespace HaldanMT { public class MtHub : Hub {

因此,我试图在一个项目中实现SignalR,我的代码如下:

MtHub.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;

namespace HaldanMT
{
    public class MtHub : Hub
    {
        public void RemoveResource(string message)
        {
            Clients.All.RemoveResource(message);
        }
    }
}
custom.js:

$(document).ready(function () {
    $.connection.mtHub.client.removeResource = function (message) { // This is the client listener that will fire once the server invokes the message. This is not taking place
        console.log("finished");
        RemoveResource(message); // Function to be invoked once the signalR message has been received from the server
    }
});
function RemoveSelf(message){
  $.connection.hub.start()
     .done(function () {
        console.log("Fire SignalR");
        $.connection.mtHub.server.removeResource(message); // Invoke the SingalR server function that would in turn invoke the client listening function
          })
          .fail(function () {
            console.log("Error With SignalR");
          });
    }
function RemoveResource(message){
  alert(message); // Display message
}
HTML:

点击我
现在…按钮单击事件会触发正确的函数,但不会调用对客户端的响应。如果我将调用js函数的signar放在documentready中,并由按钮的onclick事件包围,它就可以正常工作。但是我要求调用js函数的信号器在函数
RemoveSelf(message)
中被激发,因为其他事情需要在我的代码中发生

所以我的问题是:signar是否要求通过元素侦听器调用服务器端代码,而不是在标准函数中调用。我发现的大多数示例都使用基于jquery事件的侦听器,而不是传统的函数


提前谢谢。

signar服务器端代码不需要通过element listener调用,但这是一把双刃剑,因为JavaScript基本上可以关闭事件

您的代码应该按原样工作,但这是我的代码,它可以100%工作(我看不出我们的代码之间有多少差异。可能只是某个地方的输入错误):

中心 JavaScript(这是client-side.js中的代码) HTML
有趣的东西
@Scripts.Render(“~/bundles/jquery”)
@Scripts.Render(“~/bundles/bootstrap”)

如果这不起作用,你能告诉我你得到了什么错误吗?

signar服务器端代码不需要通过element listener调用,但这是一把双刃剑,因为JavaScript基本上可以关闭事件

您的代码应该按原样工作,但这是我的代码,它可以100%工作(我看不出我们的代码之间有多少差异。可能只是某个地方的输入错误):

中心 JavaScript(这是client-side.js中的代码) HTML
有趣的东西
@Scripts.Render(“~/bundles/jquery”)
@Scripts.Render(“~/bundles/bootstrap”)

如果这不起作用,您能告诉我您遇到了什么错误吗?

您的客户端方法的方法名称大小写错误,您使用的是“RemoveResource”,它们应该是“RemoveResource”

这是不正确的:

function RemoveResource(message){
   alert(message); // Display message
}
这应该可以解决问题:

function removeResource(message){
   alert(message); // Display message
}

您的客户端方法的方法名称大小写错误,您使用的是“RemoveResource”,它们应该是“RemoveResource”

这是不正确的:

function RemoveResource(message){
   alert(message); // Display message
}
这应该可以解决问题:

function removeResource(message){
   alert(message); // Display message
}

谢谢你的回答。好的,我是这样设置的,你是对的,这和我现在做的非常相似。我打开两个浏览器来模拟功能。在调用signarhub函数的浏览器上,一切似乎都正常工作,但在客户端侦听函数上似乎什么也没有发生。console.log会议的显示顺序如下:1。连接2。已完成启动SingalR(亦称已调用客户端侦听函数)3。触发信号器调用函数。在我看来,我希望3号和2号可以互换。我的JS控制台上没有错误。Thanx他们在同一台服务器上吗/你在使用负载平衡器吗?是的,他们在同一台服务器上…没关系,我只是通过jQuery事件侦听器使用它。我找到了在函数中调用事件侦听器并传递参数的方法。Thanx非常感谢你的帮助,虽然那不必要。。由于此代码正常工作,您的配置或其他方面出现问题。我已经验证并打开了几个不同的浏览器窗口。答案太多了。好的,我是这样设置的,你是对的,这和我现在做的非常相似。我打开两个浏览器来模拟功能。在调用signarhub函数的浏览器上,一切似乎都正常工作,但在客户端侦听函数上似乎什么也没有发生。console.log会议的显示顺序如下:1。连接2。已完成启动SingalR(亦称已调用客户端侦听函数)3。触发信号器调用函数。在我看来,我希望3号和2号可以互换。我的JS控制台上没有错误。Thanx他们在同一台服务器上吗/你在使用负载平衡器吗?是的,他们在同一台服务器上…没关系,我只是通过jQuery事件侦听器使用它。我找到了在函数中调用事件侦听器并传递参数的方法。Thanx非常感谢你的帮助,虽然那不必要。。由于此代码正常工作,您的配置或其他方面出现问题。我已经验证并打开了几个不同的浏览器窗口。
function RemoveResource(message){
   alert(message); // Display message
}
function removeResource(message){
   alert(message); // Display message
}