sse与websocket简要对比。
SSE默认支持断线重连,websocket需要自己实现,
SSE一般只用来传送文本,二进制数据需要编码后传送,websocket默认支持传送二进制数据。
SSE支持自定义发送的消息类型
首先,安装polyfill
npm install event-source-polyfill
因为event-source-polyfill没有ts版本,所以要解决这个问题,需要建立src/types/index.d.ts文件
文件中声明
declare const event-source-polyfill: any;
declare module ‘event-source-polyfill’;
使用例子
important { EventSourcePolyfill } from ‘event-source-polyfill’;
useEffect(() => {
const evtSource = new EventSourcePolyfill(‘/stream’, {
headers: {
Authorization: ‘token’
}
})
evtSource.onmessage = function(event: any) {
// to to something…
}
}, []);
因为SSE传送的流信息,所以在开发环境做反向代理时,一定要设置compress: false。否则监听不到onmessage事件。