React Native集成SignalR通过websocket连接时出现wss地址无法解析错误
报错原因
URL协议头重复导致地址无法解析。你定义的hubUrl值为wss://http://xxxx.yyy.net/ws,同时拼接了wss://和http://两个协议前缀,属于非法URL格式,因此SignalR无法解析目标连接地址。
修复方案
- 移除URL中多余的协议前缀:如果你的服务走HTTPS加密,WebSocket对应地址为
wss://xxxx.yyy.net/ws;如果是本地调试的HTTP未加密服务,对应地址为ws://xxxx.yyy.net/ws。 - 更简便的写法:
signalR.HubConnectionBuilder的withUrl方法内置协议自动适配逻辑,直接传入HTTP/HTTPS格式的Hub地址即可,不需要手动拼接ws/wss前缀,它会自动选择对应的WebSocket连接方式。
修正后代码
constructor(props) { super(props); this.state = { message: "No messages.", }; this.messageReceived = this.messageReceived.bind(this); // 直接传入HTTPS地址即可,无需手动加wss前缀 const hubUrl = 'https://xxxx.yyy.net/ws'; const connectionHub = new signalR.HubConnectionBuilder() .withUrl(hubUrl) .configureLogging(signalR.LogLevel.Information) .build(); connectionHub.on("ReceiveMessage", this.messageReceived); connectionHub.start().catch((err) => this.logError(err)); this.connection = connectionHub; }
内容的提问来源于stack exchange,提问作者Uzaq Sahillərdə
相关产品推荐
相关产品推荐

