EventSource / eventsource

EventSource client for Node.js and Browser (polyfill)
MIT License
908 stars 252 forks source link

want feature http post request #316

Open hansju-11 opened 1 year ago

hansju-11 commented 1 year ago

I'm looking for a way to send a http request as a client to the server via post. My server only use post not get method.

Example: curl https://....mynetworkprovider..../api/v3/events -X POST -H "Authorization: mypassword token" -H "Accept: text/event-stream" --data '{"identifiers":[{"ids":{"id":"12345678"}}]}'

Patrick762 commented 1 year ago

Seems like this will not be added:

https://github.com/EventSource/eventsource/pull/292 https://github.com/EventSource/eventsource/pull/112 https://github.com/EventSource/eventsource/pull/138

Do you want to use this repo with The Things network? I tried that, but the events don't work, even with the POST request added

hansju-11 commented 1 year ago

Hello @Patrick762 . yes I want to use it with 'The Things network". Do you have a working solution for that?

blerrgh commented 1 year ago

I'd also find POST support incredibly useful. There are lots of use cases for wanting to be able to send POST data to initiate an event stream response. I wish the devs would reconsider adding it as an option.

LoopControl commented 1 year ago

The OpenAI GPT / ChatGPT API uses POST to return an EventSource stream ( https://platform.openai.com/docs/api-reference/completions/create ).

Not supporting POST on it makes this library useless for it.

Please reconsider supporting POST as in #292 .

cc @aslakhellesoy

fasblom commented 9 months ago

Would be great to have support for POST as it has become a "de facto" standard in some services like ChatGPT.

cdaman123 commented 5 months ago

Hi,

Any plan to support POST request with payload and headers?

LoopControl commented 5 months ago

Don’t bother.

The author is too stubborn to implement this simple request while every AI and LLM company is using POST with SSE.

perry-mitchell commented 5 months ago

The API aims to be W3C compatible.

I would understand this to mean that the author wants to maintain some kind of accepted standard (as EventSource is based upon), not that they're stubborn.

As per web.dev:

The EventSource API is limited to making GET requests to the server. It's not possible to use POST requests with the EventSource API.

If you want something that accepts posts and streams responses, just write your own with a line-fed stream. What you want is not standard and doesn't belong in this particular implementation.

A common way to work with SSE that I've seen, for bi-directional communication, is POST'ing requests to another endpoint and using the SSE channel as a return stream. You could use something like Redis on the server side to emit events to all scaled nodes, depending on architecture, so you can scale such an implementation. No reason for them to be the same endpoint imo.

LoopControl commented 5 months ago

I would understand this to mean that the author wants to maintain some kind of accepted standard (as EventSource is based upon), not that they're stubborn.

Meanwhile, OpenAI and every other LLM company is using POST in their APIs so this library won’t work.

The world moved on from the W3C SSE spec. This library stays stuck in the past.

perry-mitchell commented 5 months ago

The world moved on from the W3C SSE spec.

No, I don't think it did: https://developer.mozilla.org/en-US/docs/Web/API/EventSource

Perhaps other libraries were written, or feature specifications suggested, but EventSource is GET only. Browsers support GET, and that spec is what (so far as I understand it) this library is based upon.