【问题标题】:Signal R client event handler not invoked despite receiving message from server尽管从服务器接收到消息,但未调用 Signal R 客户端事件处理程序
【发布时间】:2024-01-01 07:48:01
【问题描述】:

我已经为此尝试了所有可能的故障排除方法。单个事件处理程序会出现问题。消息是从服务器端接收的。我在网络选项卡中确认了这一点,但没有调用事件处理程序,也没有引发错误。

objConnection.on("FileTransferAccepted", (res) => {
          setTransferStatus(true);
});

这是在浏览器中接收到的

我也已确认附加了事件处理程序

我卡住了。无法弄清楚这个处理程序有什么问题。尝试重命名处理程序仍然没有变化。

【问题讨论】:

  • 如果您知道从 SignalR 接收到的对象的类型,我建议将其强制转换为该对象,看看它是否会触发处理程序。
  • 已经试过了。不用找了。什么都没有触发

标签: javascript reactjs .net-core websocket signalr


【解决方案1】:

所以我终于找到了问题。

我在一个页面中创建了一个连接对象,但在导航到另一个页面之前忘记清理和停止连接。在这里,我创建了另一个连接对象并更新了数据库中的连接 ID,以便我可以访问。但即使在组件被卸载之后。较早的连接没有被破坏。并且收到了消息,但该对象没有事件处理程序来处理此事件。我所做的只是在卸载时关闭先前的连接,一切都开始正常工作。

总结:

解决方案 1:如果您在不同的页面或组件中创建了多个连接。通过在卸载时调用“stop()”方法来破坏这些连接。也不要忘记在 db 中更新您的新连接 ID。

解决方案 2:不要为不同的页面创建多个连接,在整个应用程序中使用相同的对象。

【讨论】:

    最近更新 更多