0.17.3 • Published 24 days ago

@pluv/client v0.17.3

Weekly downloads
-
License
MIT
Repository
github
Last release
24 days ago

Disclaimer: This package is currently in preview and may have breaking changes between versions. Please wait for a v1.0.0 stable release before using this in production.

@pluv/client

Framework agnostic frontend client for @pluv/io

👉 See full documentation on pluv.io. 👈

Installation

# npm
npm install @pluv/client @pluv/crdt-yjs yjs

# yarn
yarn add @pluv/client @pluv/crdt-yjs yjs

# pnpm
pnpm add @pluv/client @pluv/crdt-yjs yjs

If you plan on using presence and/or storage, make sure to also install zod.

Basic Example

import { createClient } from "@pluv/client";
import { yjs } from "@pluv/crdt-yjs";
import { z } from "zod";
// Import the PluvIO instance as a type from your server file
import { type io } from "./server";

// Initialize the @pluv/client client
const client = createClient<typeof io>({
    authEndpoint: (room) => {
        return `https://localhost:3000/api/authorize?room=${room}`;
    },
    wsEndpoint: (room) => {
        return `ws://localhost:3000/api/room/${room}`;
    },
});

interface Presence {
    cursor: { x: number; y: number } | null;
}

interface Storage {
    messages: readonly { name: string; message: string }[]
}

// Create a room to join
const room = client.createRoom<Presence, Storage>("my-room", {
    initialPresence: { cursor: null },
    initialStorage: yjs.doc(() => ({ messages: yjs.array([]) })),
    onAuthorizationFail: (error) => {
        console.log(error.message);
    },
    presence: z.object({
        cursor: z.nullable(
            z.object({
                x: z.number(),
                y: z.number(),
            })
        ),
    }),
});

const main = async () => {
    await client.enter(room);

    const unsubscribe = client.event("RECEIVE_MESSAGE", ({ data }) => {
        console.log(data.message);
    });

    client.broadcast({
        type: "SEND_MESSAGE",
        data: { message: "Hello world!" },
    });

    unsubscribe();

    client.leave(room);
};

Reference

Check us out on GitHub for more information on how to use @pluv/io.

0.17.3

24 days ago

0.17.2

25 days ago

0.17.1

25 days ago

0.17.0

2 months ago

0.16.3

3 months ago

0.16.2

3 months ago

0.16.0

3 months ago

0.16.1

3 months ago

0.15.0

5 months ago

0.14.1

5 months ago

0.14.0

5 months ago

0.13.0

5 months ago

0.11.0

9 months ago

0.10.1

9 months ago

0.12.0

8 months ago

0.11.1

8 months ago

0.10.2

9 months ago

0.12.1

7 months ago

0.10.3

9 months ago

0.12.2

6 months ago

0.12.3

5 months ago

0.10.0

9 months ago

0.9.2

10 months ago

0.9.1

10 months ago

0.9.0

11 months ago

0.8.1

12 months ago

0.8.0

12 months ago

0.7.0

1 year ago

0.6.3

1 year ago

0.6.2

1 year ago

0.6.5

1 year ago

0.6.4

1 year ago

0.5.0

1 year ago

0.6.1

1 year ago

0.6.0

1 year ago

0.5.1

1 year ago

0.3.0

1 year ago

0.4.0

1 year ago

0.2.0

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.0

1 year ago