Signalr 信号器,客户端函数未被调用
我面临着一个奇怪的问题,我可以调用服务器函数,但作为回报,当我尝试调用客户机函数时,它不会调用 我是做错了什么,还是遗漏了一些需要完成的代码或配置 我正在使用VisualStudio2010开发一个web应用程序 服务器代码只是一个简单的类Signalr 信号器,客户端函数未被调用,signalr,client-side,Signalr,Client Side,我面临着一个奇怪的问题,我可以调用服务器函数,但作为回报,当我尝试调用客户机函数时,它不会调用 我是做错了什么,还是遗漏了一些需要完成的代码或配置 我正在使用VisualStudio2010开发一个web应用程序 服务器代码只是一个简单的类 using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.AspNet.SignalR; namespace S
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRDemo
{
public class MyHub:Hub
{
public void GetMessage(string msg)
{
Clients.All.getMsg1("Got :"+msg);
}
}
}`
在全球asax中,我有
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHubs();
}
客户端代码我只需单击btn,它会按预期调用服务器函数GetMessage,但作为回报,它不会调用getMsg1
$(document).ready(function () {
debugger;
var chat = $.connection.myHub;
chat.getMsg1 = function (msg) {
debugger;
alert(msg);
};
$("#btn").click(function () {
chat.server.getMessage("called");
});
$.connection.hub.start()
});
我在谷歌上搜索了一下,发现我们需要在启动hub conn之前注册客户端函数,我这样做了,但它仍然不起作用,也不会引发任何错误。没有执行客户端函数的原因是绑定错误 更改:
chat.getMsg1 = function (msg) {
debugger;
alert(msg);
};
到
另一个值得注意的是,作为一种良好实践,您应该始终在连接完全启动时绑定事件处理程序。因此,您可以按如下方式编写客户端代码:
$(document).ready(function () {
debugger;
var chat = $.connection.myHub;
chat.client.getMsg1 = function (msg) {
debugger;
alert(msg);
};
$.connection.hub.start().done(function() {
$("#btn").click(function () {
chat.server.getMessage("called");
});
});
});
没有执行客户端函数的原因是绑定错误 更改:
chat.getMsg1 = function (msg) {
debugger;
alert(msg);
};
到
另一个值得注意的是,作为一种良好实践,您应该始终在连接完全启动时绑定事件处理程序。因此,您可以按如下方式编写客户端代码:
$(document).ready(function () {
debugger;
var chat = $.connection.myHub;
chat.client.getMsg1 = function (msg) {
debugger;
alert(msg);
};
$.connection.hub.start().done(function() {
$("#btn").click(function () {
chat.server.getMessage("called");
});
});
});
谢谢你,伙计,救了我一天!+我还有一个问题。我可以调用的服务器功能的数量是否有任何限制,因为我多次点击btn当然有点快,客户端功能没有超过这个时间(基本上比率是5/10),但有一点我注意到,使用Google Chrome我没有问题,但使用IE8我有问题。这是由于IE8中对同时调用ajax的次数的限制。IE8不应该把ajax调用排队吗?你能帮我提供一些适合1.1.2的好链接吗?我搜索了一点,但找不到信号机1.1.2信号机的下降链接,找到了信号机的最佳资源。至于你的问题,如果你碰巧在IE8的飞行中超过了最多6个ajax调用,你绝对不会得到所有发送到服务器的消息。但是,对于服务器上触发的每个方法,您都应该让所有响应最终到达客户端。谢谢,伙计,救了我一天!+我还有一个问题。我可以调用的服务器功能的数量是否有任何限制,因为我多次点击btn当然有点快,客户端功能没有超过这个时间(基本上比率是5/10),但有一点我注意到,使用Google Chrome我没有问题,但使用IE8我有问题。这是由于IE8中对同时调用ajax的次数的限制。IE8不应该把ajax调用排队吗?你能帮我提供一些适合1.1.2的好链接吗?我在谷歌上搜索了一下,但没有找到信号机1.1.2的下降链接信号机的最佳资源在。至于你的问题,如果你碰巧在IE8的飞行中超过了最多6个ajax调用,你绝对不会得到所有发送到服务器的消息。但是,对于服务器上触发的每个方法,您应该让所有响应最终到达客户端。