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

JavaScript连接Azure SignalR成功后客户端事件无法触发问题求助

SignalR客户端事件无法触发问题解决

核心问题1:事件名大小写不匹配

SignalR的客户端事件名称是大小写严格敏感的,你当前服务端推流的事件名和客户端监听的名称不一致:

  • 服务端代码中调用 Await Clients.All.SendAsync("ReceiveMessage", user, message),推送的事件名为首字母大写的 ReceiveMessage
  • 客户端代码绑定的是首字母小写的 reportHubProxy.on("receiveMessage", ...)

解决方法

两边统一事件名即可,比如将客户端监听代码修改为:

reportHubProxy.on("ReceiveMessage", function (user, message) {
  // 原有逻辑不变
})

核心问题2:对客户端事件触发逻辑的误解

你在客户端绑定的 reportHubProxy.on("sendMessage", ...) 事件,仅会在服务端主动向客户端推送名为sendMessage的事件时触发,本地调用 reportHubProxy.invoke("sendMessage") 是调用服务端的对应方法,不会触发本地绑定的该事件。

测试本地事件触发的方法

如果需要本地测试事件回调是否正常,可以用fire方法主动触发本地绑定的事件:

// 放在connection.start的done回调里测试即可
reportHubProxy.fire("sendMessage", "测试用户", "测试消息")

附加代码问题

你客户端代码里的模板字符串写法错误,当前用双引号包裹不会解析变量:

// 原错误写法
li.textContent = "${user} says ${message}";
// 修改为反引号包裹
li.textContent = `${user} says ${message}`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:36:06