websocket对接SignalR要注意的问题

717 阅读1分钟

最近的项目用到websocket了,使用过程中遇到的一些问题,记录一下。

后端用的.net的SignalR来发送消息,我用websocket连接成功后,一直没有推消息过来,后端小哥说数据已经在推了

 this.socket = new WebSocket(url);
 this.socket.onopen =(event)=>{
     console.log('连接成功')
 }
 this.socket.onmessage = (event) => {
  console.log(event.data)  // 这里打印不出来
 };

后来上网一搜,发现需要客户端先发一条信息给服务端,这样握手成功之后,浏览器就能看到发过来的数据了

this.socket.onopen = (event) => {
    console.log('连接成功')
    //打开后立即发送
    this.send(`{"protocol":"json", "version":1}${String.fromCharCode(0x1e)}`);
};

SignalR发送过来的数据都是以0x1e结尾,所以我们在用JSON.parse格式化数据前,要先截掉SignalR自带的小尾巴

const suffix_code = String.fromCharCode(0x1e);
const arr = event.data.split(suffix_code)
const data = JSON.parse(arr[0]);

参考:blog.csdn.net/u011540323/…