⚫︎ 概要
talknリアルタイム通信プラットフォーム用のWebSocketクライアントライブラリです。
Socket.IO + Redux + WebWorkerを統合したリアルタイム通信ライブラリとして設計されており、 バンドルされたJSファイルとして外部配布されます。
- - リアルタイムチャット通信
- - 投稿の送受信
- - チャンネル管理
- - ランキング機能
- - WebWorkerによる非ブロッキング通信
⚫︎ インストール
CDN経由
<script src="//api.talkn.io"></script>
⚫︎ 基本的な使い方
1. シンプルな接続
// 基本的な接続 const client = await TalknAPI('your-server-connection'); // メッセージ投稿 await client.post('Hello, world!'); // 状態取得 const state = client.getState(); console.log('Current posts:', state.posts);
2. 状態変更の監視
const client = await TalknAPI('your-server-connection'); // 状態変更を監視 const unsubscribe = client.subscribe((state) => { console.log('New posts:', state.posts); console.log('Channel info:', state.tuneCh); console.log('Rankings:', state.rank); }); // 監視停止 unsubscribe();
3. 詳細な設定
// 接続パラメータを指定 const params = { isTuneSameCh: true, // 同一チャンネル接続許可 isTuneMultiCh: true, // 複数チャンネル接続許可 isDebug: false // デバッグモード }; const client = await TalknAPI('your-server-connection', params);
⚫︎ API リファレンス
TalknAPI(connection, params?)
Returns: Promise<ScopedTalknClient>
メインのファクトリ関数。接続を確立し、スコープされたクライアントを返します。
パラメータ | 型 | 説明 |
---|---|---|
connection | string | 接続先サーバーの識別子 |
params | TuneParams (optional) | 接続オプション |
メソッド | 説明 |
---|---|
getState(): ApiState | 現在の状態を取得します。 |
post(content: string): Promise<ResponseType> | メッセージを投稿します。 |
fetchPosts(): Promise<ResponseType> | 投稿一覧を取得します。 |
fetchRank(): Promise<ResponseType> | ランキングデータを取得します。 |
fetchDetail(): Promise<ResponseType> | チャンネル詳細情報を取得します。 |
subscribe(callback: Function): () => void | 状態変更を監視します。登録解除関数を返します。 |
⚫︎ 実装例
リアルタイムチャットアプリ
class ChatApp { constructor() { this.client = null; this.messageContainer = document.getElementById('messages'); this.messageInput = document.getElementById('messageInput'); this.sendButton = document.getElementById('sendButton'); } async init(serverConnection) { try { // Talkn APIクライアント接続 this.client = await TalknAPI(serverConnection, { isTuneSameCh: true, isTuneMultiCh: false }); // 既存の投稿を取得 await this.client.fetchPosts(); // リアルタイム状態監視 this.client.subscribe((state) => { this.updateMessages(state.posts); this.updateChannelInfo(state.tuneCh); }); // 送信ボタンイベント this.sendButton.addEventListener('click', () => { this.sendMessage(); }); console.log('Chat app initialized successfully'); } catch (error) { console.error('Failed to initialize chat app:', error); } } async sendMessage() { const content = this.messageInput.value.trim(); if (content && this.client) { try { await this.client.post(content); this.messageInput.value = ''; } catch (error) { console.error('Failed to send message:', error); } } } } // 使用例 const chatApp = new ChatApp(); chatApp.init('my-chat-room');