客户端仅接收一些服务器发送的事件

问题描述 投票:0回答:1

我正在使用服务器发送的事件通过后端的Spring Boot进行启动,并以client / native / expo作为客户端。要在客户端上处理服务器发送事件,我使用react-native-event-source。但是问题是客户端仅接收到一些事件。这是场景:

  • 事件ID 0->未收到
  • 事件ID 1->已收到
  • 事件ID 2->未收到
  • 事件ID 3->已收到
  • 事件ID 4->未收到
  • 事件ID 5->已收到...

在服务器端,我们尝试了不同的黑客攻击和日志,显示服务器实际上正在发送每个事件,但博览会客户端似乎忽略了某些事件(两个事件中有一个事件)。

这是我们初始化连接以获取服务器发送事件的方式:

  listen() {
    const options = {
      headers: {
        Authorization: `Bearer ${this.userToken}`,
      },
    };
    let url = `${TEST_URL}${this.user.id}`;
    try {
      console.log('starting stream ...');

      const eventName = `dataSet-created${this.user.id}`;

      this.eventSource = new RNEventSource(url, options); 
      this.eventSource.addEventListener(eventName, event => {
        console.log('stream event received', event);
      });

      this.eventSource.addEventListener('error', e => {
        console.log('stream listener error', e);
      });

      console.log('eventSource stream ...', this.eventSource);
    } catch (e) {
      console.log('start stream error', e);
    }
  }
javascript spring-boot react-native expo server-sent-events
1个回答
0
投票

react-native-event-source不使用真实的EventSource,而是通过轮询解决。因此,我的猜测是您的客户错过了消息,因为单个轮询间隔(that is 500ms)中有多个消息。

原因是本机currently does not support HTTP streams

© www.soinside.com 2019 - 2024. All rights reserved.