Skip to content

Fetch request restarting without finishing #41

@jackadair

Description

@jackadair

Hello, trying to use this package to consume events emitted by my backend server using sse_starlette

This is the formatting of my events:

{
                "event": "message",
                "data": token + "\n\n",
 }

However when I try to fetch them in the frontend the request seems to be restarting before finishing, it eventually reaches the end and closes but not before restarting a few times:

 DEBUG  [EventSource] Will open new connection in 500 ms.
 DEBUG  [EventSource][onreadystatechange] ReadyState: HEADERS_RECEIVED(2), status: 200
 DEBUG  [EventSource][onreadystatechange] ReadyState: LOADING(3), status: 200
 LOG  Event: undefined
 DEBUG  [EventSource][onreadystatechange][OPEN] Connection opened.
 LOG  Event:
 DEBUG  [EventSource][onreadystatechange] ReadyState: LOADING(3), status: 200
 LOG  Event:
 LOG  Event: Hi
 LOG  Event: !
 LOG  Event: Welcome
 DEBUG  [EventSource][onreadystatechange] ReadyState: LOADING(3), status: 200
 LOG  Event:
 LOG  Event: Hi
 LOG  Event: !
 LOG  Event: Welcome
 LOG  Event: to
 LOG  Event: Canada
 LOG  Event: !
 DEBUG  [EventSource][onreadystatechange] ReadyState: LOADING(3), status: 200
 LOG  Event:
 LOG  Event: Hi
 LOG  Event: !
 LOG  Event: Welcome
 LOG  Event: to
 LOG  Event: Canada
 LOG  Event: !
 LOG  Event: How
 LOG  Event: can
 LOG  Event: I
 DEBUG  [EventSource][onreadystatechange] ReadyState: LOADING(3), status: 200
 LOG  Event:
 LOG  Event: Hi
 LOG  Event: !
 LOG  Event: Welcome
 LOG  Event: to
 LOG  Event: Canada
 LOG  Event: !
 LOG  Event: How
 LOG  Event: can
 LOG  Event: I
 LOG  Event: assist
 LOG  Event: you
 LOG  Event: today
 LOG  Event: ?
 LOG  Event:
 LOG  Event: STOP
 DEBUG  [EventSource][onreadystatechange] ReadyState: DONE(4), status: 200
 LOG  Event:
 LOG  Event: Hi
 LOG  Event: !
 LOG  Event: Welcome
 LOG  Event: to
 LOG  Event: Canada
 LOG  Event: !
 LOG  Event: How
 LOG  Event: can
 LOG  Event: I
 LOG  Event: assist
 LOG  Event: you
 LOG  Event: today
 LOG  Event: ?
 LOG  Event:
 LOG  Event: STOP
 DEBUG  [EventSource][onreadystatechange][DONE] Operation done.

Frontend Code:

const chat = async () => {
    const stream = new EventSource(
      "https://my-url.com",
      {
        body: JSON.stringify({
          query: inputText,
        }),
        headers: {
          "Content-Type": "application/json",
        },
        method: "POST",
        pollingInterval: 0,
        debug: true,
      
      }
    );

    const eventListener = (event: any) => {
      console.log("Event: " + event.data);
    };
    
    stream.addEventListener("message", eventListener);
    stream.addEventListener("open", eventListener)
    stream.addEventListener("close", eventListener)

    return () => {
      
      stream.removeAllEventListeners();
      stream.close();
    };
  };

Using latest package version with Expo SDK 49. My backend server works as expected when using Postman but only seems to have issues in my frontend environment.

Any help is appreciated!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions