JavaScript
@sada/web يضع صوت WebRTC في المتصفح: Sada.join() واحد برمز من خادمك، بضعة أحداث، كتم ومغادرة. ESM بلا اعتماديات.
01التثبيت
الحزمة ESM فقط وتعمل مع أي bundler أو مباشرة من <script type="module">. المتصفحات لا تتيح الميكروفون إلا على HTTPS أو localhost.
02الانضمام إلى مكالمة
اطلب رمزاً من خادمك أولاً (يستدعي POST /calls/{call_id}/tokens)، ثم مرّره إلى Sada.join(). يُحلّ الوعد حين يصبح المشارك داخل المكالمة؛ وطلب إذن الميكروفون يحدث في الداخل.
03الأحداث
call.on(event, handler) يعيد دالة تزيل ذلك المعالج. الأحداث التي تطلقها المكالمة:
| الحدث | البيانات | الوصف |
|---|---|---|
participant-joined
|
{ id, userRef, name, muted }
|
انضم أحدهم؛ p هو المشارك الجديد.
|
participant-left
|
{ id, userRef, name, muted }
|
غادر أحدهم. |
connected
|
—
|
الصوت يتدفق — أظهر المؤقت الآن. |
quality
|
{ isPoor, rtt, packetLoss }
|
تغيّرت الشبكة. isPoor يقول إن كان عليك التحذير؛ rtt بالميلي ثانية وpacketLoss بالنسبة المئوية.
|
muted
|
{ participant, muted }
|
مشارك (ربما أنت) كتم صوته أو ألغى الكتم. |
ended
|
{ reason: 'left' | 'ended' | 'error', minutes }
|
انتهت المكالمة بالنسبة لك: غادرت، أو أنهاها الخادم، أو فشلت. minutes دقائق المشارك الخاصة بك.
|
error
|
Error
|
خطأ غير قاتل يستحق التسجيل. |
04الكتم والمكبّر والمغادرة
setMuted وsetSpeaker يعيدان وعوداً. تبديل المكبّر يعتمد على المتصفح: setSpeaker يُحلّ بـ false حيث لا يمكن اختيار جهاز الإخراج (معظم متصفحات الهاتف)، وعندها يُستخدم الافتراضي للنظام.
05كائن المكالمة
ما يُحلّ به Sada.join().
| الخاصية | النوع | الوصف |
|---|---|---|
call.id
|
string
|
الـ call_id من خادمك.
|
call.me
|
{ id, userRef, name, muted }
|
مشاركك أنت. |
call.participants
|
Participant[]
|
كل من في المكالمة الآن، وأنت منهم. |
call.muted
|
boolean
|
هل ميكروفونك مكتوم. |
06متطلبات المتصفح
أي إصدار حديث من Chrome أو Edge أو Firefox أو Safari (iOS 15+). HTTPS إلزامي إلا على localhost. على iOS يجب أن يتفاعل المستخدم مع الصفحة قبل تشغيل الصوت، فاستدعِ Sada.join() من معالج نقرة.