Skip to content

Svelte Integration ​

Readable Stores ​

Import stores and lifecycle helpers directly from @jengo/broadcasting/svelte:

svelte
<!-- Using Svelte readable stores with automatic subscriptions -->
<script lang="ts">
import { Broadcaster } from '@jengo/broadcasting';
import { createChannelStore } from '@jengo/broadcasting/svelte';

const broadcaster = new Broadcaster({
    broadcaster: 'sse',
    endpoint: '/broadcasting/sse',
});

const latestOrder = createChannelStore('orders', 'OrderCreated', null, broadcaster);
</script>

{#if $latestOrder}
    <p>New Order: {$latestOrder.id}</p>
{/if}

Context & Lifecycle Hooks ​

Or use Svelte context and lifecycle hooks (useChannel, usePresence):

svelte
<script lang="ts">
import { useChannel, usePresence } from '@jengo/broadcasting/svelte';

let messages = [];

useChannel('chat.lobby', 'NewMessage', (msg) => {
    messages = [...messages, msg];
});

const { members } = usePresence('room.lobby');
</script>

<ul>
    {#each $members as member (member.id)}
        <li>{member.info?.name ?? member.id}</li>
    {/each}
</ul>

Released under the MIT License.