目前,我在React上实现EventSource(用于监听服务器发送事件的客户端)。下面是我的代码示例。
import React from "react";
let es = {};
class Layout extends React.Component {
componentDidMount() {
let $$ = this;
es = new EventSource(`${urlConfig.SSE_HOST}subscribe`);
es.addEventListener("rule-event", function (e) {
const data = JSON.parse(e.data);
console.log("DATA Event => ", data);
$$.props.addRuleEvent(data.name, data.value);
const rule = data.name.split(':');
const ruleName = rule[0];
const ruleType = rule[1];
$$.props.addLatestEvent(`${ruleName}:${ruleType}`, data.value);
});
componentWillUnmount() {
es.close();
}
}
从SSE接收数据后,我将数据推送到redux并稍后使用。但是现在我遇到了一个新问题,经过大约半小时/一个小时的长时间后,出现了问题(我一直打开浏览器选项卡CHROME)。问题在于数据将被多次接收,有时甚至是3或4个数据。即使我的SSE仅发送一个数据。
第二个问题,有时我的客户端(EventSource)需要很长时间才能收听SSE
有人以前遇到过此错误吗?还是我的代码有问题?