@ocean-cloud-ring/sdk
@ocean-cloud-ring/sdk
Ocean Ring için resmi JS/React SDK. Tek bir OceanRingClient üzerinden hem
REST API'ye (ring-backend — workspace/channel/starred, client.api.*) hem
de gerçek zamanlı servise (rtserver — WS mesajlaşma/presence/typing/
notification/call sinyalleşmesi, client.*) erişim sağlar. Stream.io'nun
istemcisine benzer şekilde: tek client, birden çok host, otomatik fallback.
Kurulum
npm install @ocean-cloud-ring/sdk
Hızlı başlangıç
import { OceanRingClient } from '@ocean-cloud-ring/sdk';
const client = new OceanRingClient({
// Gerçek zamanlı servis (rtserver): WS + upload/search/files/calls REST uçları
rtUrl: 'https://api.oceanring.io',
rtFallbackUrls: ['https://api-eu.oceanring.io'], // opsiyonel
// REST API (ring-backend, genelde 01-api-gateway üzerinden): workspace/channel/starred
apiUrl: 'https://graph.oceansln.com/v1.0',
apiFallbackUrls: [], // opsiyonel
reconnect: true,
});
await client.connect({ token: idToken, workspaceId, deviceType: 'web' });
// REST API
const { workspaces } = await client.api.workspace.list();
const channels = await client.api.channel.list(workspaceId);
// Gerçek zamanlı
client.on('message:new', (msg) => console.log('yeni mesaj', msg));
await client.sendMessage({ channelId, content: 'Merhaba' });
Çoklu host / fallback (Stream.io tarzı)
Her iki taraf (rt ve api) için ayrı birincil + fallback host listesi
verilebilir. Bir host'a istek ağ hatasıyla başarısız olursa istemci otomatik
olarak listedeki bir sonraki host'u dener ve hangisinin çalıştığını kısa
süreliğine (60sn) hatırlar — bkz. src/urlResolver.ts (UrlResolver,
fetchWithFallback). Sağlık kontrolü için her host'ta /health denenir;
hiçbiri yanıt vermezse yine de birincil host ile devam edilir (offline'da
anlamlı bir hata almak için).
import { UrlResolver, fetchWithFallback } from '@ocean-cloud-ring/sdk';
// Kendi REST entegrasyonlarınızda da aynı mekanizmayı kullanabilirsiniz.
React hook'ları
import {
useConnection, useChannels, useMessages, useSendMessage, useTyping,
useNotifications, useCall, useCallHistory,
// REST API hook'ları (client.api.*)
useWorkspaces, useWorkspaceMembersApi, useChannelsApi, useStarredItems,
useSearch, useWorkspaceFiles,
} from '@ocean-cloud-ring/sdk';
Geriye dönük uyumluluk
Eski baseUrl alanı hâlâ desteklenir (rtUrl'e eşdeğerdir); apiUrl
verilmezse rtUrl kullanılır (tek servisli/monolit kurulumlar için).
Geliştirme
npm install
npm run build # tsc → dist/