SignalR连接后收不到服务器推送的消息怎么办?
我在Vue项目里集成SignalR,连接能成功建立,但服务器发消息时前端完全没反应,控制台也没报错。是不是监听方法写错了?
我用的是@microsoft/signalr包,连接代码如下:
<script setup>
import { HubConnectionBuilder } from '@microsoft/signalr'
const connection = new HubConnectionBuilder()
.withUrl('https://localhost:5001/chatHub')
.build()
connection.start().then(() => {
console.log('Connected!')
})
// 这里注册了监听,但从来没触发过
connection.on('ReceiveMessage', (user, message) => {
console.log(user, message)
})
</script>
第一,确认服务器端hub的方法名。SignalR事件名是区分大小写的,检查下服务器端是不是真的叫
ReceiveMessage而不是receiveMessage之类的。最好让后端同事把他们的Hub方法定义发你看看。第二,把连接监听提前到
start()之前。有时候异步问题会导致监听注册晚了:第三,加个错误处理看看有没有隐藏问题:
如果还不行,可能是跨域问题。检查下服务器端CORS配置,确保允许了SignalR的请求头和后端地址。这个点坑过我两次,每次都要花半小时才想起来。