Files
tap-sdk-js/README.md
2025-07-06 22:15:39 +09:00

122 lines
3.2 KiB
Markdown

![Logo](https://capsule-render.vercel.app/api?type=waving&height=300&color=gradient&text=Zako%20TapSDK.js&textBg=false)
# Zako Tap SDK js
This is the javascript sdk package required to create a javascript tap server responsible for the audio of `zako`, a discord audio bot.
## Dependencies
| package | version |
| --- | --- |
| eventemitter3 | 5.0.1" |
| got | 14.4.7 |
| jest | 30.0.4 |
| ws | 8.18.3 |
| zod | 3.25.72 |
## Quickstart Example
First, you need to download `zako-sdk-js` on your project.
```bash
npm install zako-sdk-js
```
Then, you can use the sdk.
Here is some example.
```js
import { createClient } from "zako-sdk-js"
const client = createClient({
name: "your zako tap server name",
token: "your zako tap server token",
zakoEndpoint: "zako endpoint (default is https://api.zako.ac)"
});
client.events.on("ready", () => {
console.log("ready");
});
client.events.on("request", (handle) => {
handle.respond("audio stream on here")
});
client.events.on("connectionError", (e) => {
console.error(e);
});
client.events.on("error", (e) => {
console.error(e);
});
client.connect();
await new Promise((r) => setTimeout(r, 100000));
```
## Client Description
### 1. Create Client and Connect
You can create tap server client by call `createClient` function in `tap-sdk-js` package.
You should put the client data written as `ZakoTapConfig` type inside the argument of `createClient`.
You can then connect to the tab server using `client.connect()`.
```js
import { createClient } from "zako-sdk-js"
const client = createClient({
name: "your zako tap server name",
token: "your zako tap server token",
zakoEndpoint: "zako endpoint (option)"
backoffBaseMs: "loop waiting time (option)";
});
client.connect();
```
### 2. Client Event
Using the client created above, you can use client.on to perform a specific function when the EventEmitter's event is called.
```js
client.events.on("event name", function)
```
The types of events are specified in TapEvents among the types in the zakotap package.
#### Tap Events
- `ready`: This event is called when the zako tap server successfully connects to the `zako tap hub`.
- `request`: This event is called when an `audio request` is received from the `zako tap hub`.
- `connectionError`: This event is called when an connection error occurs within the zakotap package.
- `error`: This event is called when an error occurs within the zakotap package.
### 3. Send Audio
You can send your audio stream by using `handle.respond()` function.
```js
handle.respond("your audio stream")
```
You can get `audio request handle` from request event parameter. If you don't send an audio stream, your tap server will be considered offline and you may be disconnected.
## Work Flow
```mermaid
sequenceDiagram
participant TapServer
participant TapHub
TapServer->>TapHub: WS TapHello
TapHub-->>TapServer: WS TapResponse
Note right of TapServer: Waiting for audio request
TapHub-->>TapServer: WS AudioRequest
TapServer->>TapHub: POST AudioStream
```
## Related Documents
- [Zako 2]()
- [Protocol Specification]()
## Authors
- [@ridanit-ruma](https://github.com/ridanit-ruma) (Discord: `ruma0607`)