首页 > 解决方案 > EventSource 响应时间长,接收多条数据

问题描述

目前我在 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

有人以前遇到过这个错误吗?还是我的代码有问题?

标签: javascriptreactjsserver-sent-eventseventsource

解决方案


推荐阅读