React中使用@microsoft/signalR连接第三方SignalR服务遇版本兼容错误
问题根源
你使用的@microsoft/signalR是ASP.NET Core SignalR专属客户端,完全不兼容旧版的ASP.NET SignalR服务器(也就是你连接的https://signals.fanbotuk.com/signalr/hubs)。控制台先打印"hub connected"是因为初始HTTP握手步骤完成了,但后续协议校验时识别出服务器是旧版本,随即抛出不兼容错误。
解决方法
替换为旧版SignalR客户端包(不带@microsoft前缀的signalR),并调整代码适配旧版API:
- 替换客户端包
npm uninstall @microsoft/signalr npm install signalr
- 修改连接代码
// 先确保项目引入了jQuery(可通过npm install jquery后import,或HTML引入CDN) import $ from 'jquery'; import 'signalr'; const connectionUrl = "https://signals.fanbotuk.com/signalr/hubs"; // 旧版客户端创建连接的方式 const connection = $.hubConnection(connectionUrl); // 创建Hub代理(需替换为服务器端实际的Hub名称) const hubProxy = connection.createHubProxy('TargetHubName'); // 示例:监听服务器推送的消息 hubProxy.on('messageReceived', (data) => { console.log('收到服务器消息:', data); }); async function startConnection() { try { await connection.start(); console.log('hub connected'); } catch (err) { console.log('connection error'); console.error(err); // 可选:添加自动重试逻辑 setTimeout(startConnection, 5000); } } startConnection(); export default { connection, hubProxy };
注意:官方旧版SignalR客户端依赖jQuery,必须确保项目中已引入jQuery才能正常运行。
内容的提问来源于stack exchange,提问作者Khushboo Singh
相关产品推荐
相关产品推荐

