
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
Fetch Server-Sent Events (SSE) as an async iterable.
To use locally, install via npm:
npm install asyncsse
... and add this to your script:
import { asyncSSE } from "./node_modules/asyncsse/dist/asyncsse.js";
To use via CDN, add this to your script:
import { asyncSSE } from "https://cdn.jsdelivr.net/npm/asyncsse@1";
<script type="module">
import { asyncSSE } from "https://cdn.jsdelivr.net/npm/asyncsse@1";
// Example usage
(async () => {
for await (const { data, error } of asyncSSE("https://api.example.com/sse")) {
if (error) throw new Error(error);
console.log(data);
}
})();
</script>
import { asyncSSE } from "asyncsse";
// Example usage
(async () => {
for await (const { data, error } of asyncSSE("https://api.example.com/sse")) {
if (error) throw new Error(error);
console.log(data);
}
})();
asyncSSE(url: string, options?: RequestInit, config?: SSEConfig): AsyncIterable<SSEEvent>Fetches Server-Sent Events from the specified URL and returns an async iterable.
url: The URL to fetch SSE fromoptions: Optional fetch optionsconfig: Optional configuration object
fetch: Custom fetch implementation (defaults to global fetch)onResponse: Async callback to inspect or modify the Response before streaming beginsReturns an async iterable that yields SSEEvent objects.
Events can have fields like event, data, id, and retry like this:
event: userupdate
id: 123
data: {"username": "testuser", "status": "online"}
retry: 5000
data: Simple message
asyncSSE parses these into a single object.
(async () => {
for await (const event of asyncSSE(sseStream, {})) {
console.log(event.event, event.data, event.id, event.retry);
}
})();
This would output:
{ event: "userupdate", id: "123", data: '{"username": "testuser", "status": "online"}', retry: "5000" }
{ data: "Simple message" }
Comment lines with a colon (:) are comments and are ignored by the parser. They will not result in an event.
: This is a comment, it will be ignored
data: First event
: Another comment
event: important
data: Second event
id: 456
This would output:
{ data: "First event" }
{ event: "important", data: "Second event", id: "456" }
retry fields suggest a reconnection time (in milliseconds). asyncSSE itself does not automatically handle reconnection based on this value; it simply parses and provides it. Wait for this duration and reconnect if the connection is lost.
import { asyncSSE } from "asyncsse";
const apiKey = "YOUR_OPENAI_API_KEY";
const url = "https://api.openai.com/v1/chat/completions";
const options = {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${apiKey}`,
},
body: JSON.stringify({
model: "gpt-4",
stream: true,
messages: [{ role: "user", content: "Hello, world!" }],
}),
};
const config = {
onResponse: async (response) => {
console.log("Requests remaining:", response.headers.get("X-Ratelimit-Remaining-Requests"));
},
};
// Fetch the stream, event by event
for await (const { data, error } of asyncSSE(url, options, config)) {
if (error) throw new Error(error);
console.log(JSON.parse(data));
}
You can directly stream SSE events from a text string using the provided fetchText helper:
import { asyncSSE } from "https://cdn.jsdelivr.net/npm/asyncsse@1";
import { fetchText } from "https://cdn.jsdelivr.net/npm/asyncsse@1/dist/fetchtext.js";
You can run the tests using Deno:
const text = "data: Hello\n\ndata: World\n\n";
// Stream events from text
for await (const event of asyncSSE(text, {}, { fetch: fetchText })) {
console.log(event);
}
This outputs:
{ data: "Hello" }
{ data: "World" }
This is particularly useful for testing SSE parsing without making actual HTTP requests.
git clone https://github.com/sanand0/asyncsse.git
cd asyncsse
npm install
npm run lint && npm run build && npm test
npm publish
git commit . -m"$COMMIT_MSG"; git tag $VERSION; git push --follow-tags
fetchText helper for mocking SSE responses. Add source maps and TypeScriptconfig.fetch parameter for custom fetch implementationsconfig.onResponse callbackThis project is licensed under the MIT License - see the LICENSE file for details.
FAQs
Fetch Server-Sent Events (SSE) as an async iterable
We found that asyncsse demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.