我正在使用服务器发送的事件通过后端的Spring Boot进行启动,并以client / native / expo作为客户端。要在客户端上处理服务器发送事件,我使用react-native-event-source。但是问题是客户端仅接收到一些事件。这是场景:
在服务器端,我们尝试了不同的黑客攻击和日志,显示服务器实际上正在发送每个事件,但博览会客户端似乎忽略了某些事件(两个事件中有一个事件)。
这是我们初始化连接以获取服务器发送事件的方式:
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);
}
}
react-native-event-source
不使用真实的EventSource,而是通过轮询解决。因此,我的猜测是您的客户错过了消息,因为单个轮询间隔(that is 500ms)中有多个消息。