Skip to content

Commit 6cda129

Browse files
authored
Fix text parsing when double newline missing at end (#44)
1 parent d6434ac commit 6cda129

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/EventSource.js

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,15 @@ class EventSource {
174174
}
175175

176176
_handleEvent(response) {
177-
const parts = response.substr(this.lastIndexProcessed).split('\n');
178-
179-
const indexOfDoubleNewline = response.lastIndexOf('\n\n');
180-
if (indexOfDoubleNewline != -1) {
181-
this.lastIndexProcessed = indexOfDoubleNewline + 2;
177+
const indexOfDoubleNewline = this._getLastDoubleNewlineIndex(response);
178+
179+
if (indexOfDoubleNewline <= this.lastIndexProcessed) {
180+
return;
182181
}
183-
182+
183+
const parts = response.substring(this.lastIndexProcessed, indexOfDoubleNewline).split('\n');
184+
this.lastIndexProcessed = indexOfDoubleNewline;
185+
184186
let data = [];
185187
let retry = 0;
186188
let line = '';
@@ -219,6 +221,14 @@ class EventSource {
219221
}
220222
}
221223

224+
_getLastDoubleNewlineIndex(response) {
225+
const lastIndex = response.lastIndexOf('\n\n');
226+
if (lastIndex === -1) {
227+
return -1;
228+
}
229+
return lastIndex + 2;
230+
}
231+
222232
addEventListener(type, listener) {
223233
if (this.eventHandlers[type] === undefined) {
224234
this.eventHandlers[type] = [];

0 commit comments

Comments
 (0)