vue SSE使用

2,466 阅读1分钟
// event-source-polyfill兼容性良好,可自定义header
yarn add event-source-polyfill
import { EventSourcePolyfill } from 'event-source-polyfill';
const eventSource = new EventSourcePolyfill(
`http:${import.meta.env.baseurl}/user/sseService?name=${name}`,
{
  headers: {
    'access-token': getAccessToken(),
  },
}
);
/*
* open:订阅成功(和后端连接成功)
*/
eventSource.addEventListener('open', function (e) {
    console.log('open successfully');
});
/*
* message:后端返回信息,格式可以和后端协商
*/
eventSource.addEventListener('message', function (e) {
    console.log(e.data);
    const { status, msg } = e.data;
});

/*
* error:错误(可能是断开,可能是后端返回的信息)
*/
eventSource.addEventListener('error', function (err) {
    console.log(err);
    // 类似的返回信息验证,这里是实例
    err && err.status === 401 && console.log('not authorized');

    eventSource.close();
});