You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务端按钮点击触发后SignalR客户端方法无响应问题排查求助

问题根因及修复方案

1. 客户端方法注册顺序错误

ASP.NET SignalR(非.NET Core版本)要求所有客户端回调方法必须在启动连接($.connection.hub.start())之前注册,否则服务端推送的消息无法被客户端捕获。你当前代码中先执行了start(),之后才定义showtradenotification回调,是最核心的问题。

2. 重连逻辑存在冗余错误

你在reconnected事件中重复调用了Connect()方法,本身重连成功后连接已经处于可用状态,重复调用启动连接会导致连接实例被重置,之前注册的回调失效,还可能产生连接冲突。

3. 可选检查项

  • 如果你的WinForm按钮和SignalR Hub不属于同一个Web应用进程(比如你把Hub放在Web项目,按钮放在独立的WinForm客户端项目),直接调用GlobalHost.ConnectionManager.GetHubContext是拿不到正确的Hub上下文的,跨进程调用SignalR需要通过服务端公开的接口调用,不能直接拿上下文。
  • 检查是否开启了对应跨域配置,如果前端页面域名/端口和SignalR服务端不一致,未配置CORS也会导致消息被拦截。
  • 打开浏览器控制台,查看是否有SignalR相关报错输出,辅助定位问题。

修正后的客户端代码
function Connect() {
    $.connection.hub.url = url;
    stockTickerHubProxy = $.connection.mobileStockTickerHub;
    if (stockTickerHubProxy) {
        // 先注册所有客户端回调方法,再启动连接
        stockTickerHubProxy.client.addMessage = function (name, message) {
            console.log(name + ":" + message);
        }
        stockTickerHubProxy.client.showtradenotification = function (msg) {
            alert(msg)
        }
        
        $.connection.hub.disconnected(function () {
            console.log("Server disconnected.");
            // 断开后可加延迟重连逻辑,不要在reconnected里重复调用Connect
            setTimeout(() => $.connection.hub.start(), 3000);
        });
        $.connection.hub.reconnecting(function () {
            console.log("Server reconnecting...");
        });
        $.connection.hub.reconnected(function () {
            console.log("Server reconnected...");
            // 移除重复调用Connect的逻辑
            stockTickerHubProxy.server.setUserName(code);
        });
        $.connection.hub.error(function (error) {
            console.log('SignalR error: ' + error)
        });

        // 所有回调注册完成后再启动连接
        $.connection.hub.start().done(function () {
            console.log("Connected...");
            connectionId = $.connection.hub.id;
            console.log(connectionId)
            stockTickerHubProxy.server.setUserName(code);
        }).fail(function () {
            alert("Can't connect");
        });
    }
}

内容的提问来源于stack exchange,提问作者Hemal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:57:02