46 lines
1.2 KiB
Markdown
46 lines
1.2 KiB
Markdown
# @proj-airi/server-sdk
|
|
|
|
The SDK for cliet-side code to connect to the server-side components.
|
|
|
|
## Usage
|
|
|
|
```shell
|
|
ni @proj-airi/server-sdk -D # from @antfu/ni, can be installed via `npm i -g @antfu/ni`
|
|
pnpm i @proj-airi/server-sdk -D
|
|
yarn i @proj-airi/server-sdk -D
|
|
npm i @proj-airi/server-sdk -D
|
|
```
|
|
|
|
```typescript
|
|
import { Client } from '@proj-airi/server-sdk'
|
|
|
|
const client = new Client({
|
|
name: 'your airi plugin',
|
|
autoConnect: false,
|
|
})
|
|
|
|
await client.connect()
|
|
|
|
client.onEvent('input:text', async (event) => {
|
|
console.info(event.data.text)
|
|
})
|
|
```
|
|
|
|
`connect()` now resolves when the client is fully ready for use, not just when the websocket transport has opened. In practice that means:
|
|
|
|
- the socket is open
|
|
- authentication succeeded when a token is configured
|
|
- the module has announced itself successfully
|
|
|
|
Useful runtime helpers:
|
|
|
|
- `client.connectionStatus` exposes the current lifecycle state
|
|
- `client.isReady` tells you whether the client has completed authentication + announce
|
|
- `client.send()` returns `false` instead of silently dropping messages when the socket is unavailable
|
|
- `client.sendOrThrow()` is available when you want strict delivery semantics
|
|
- `client.onEvent()` returns an unsubscribe function
|
|
|
|
## License
|
|
|
|
[MIT](../../LICENSE)
|