Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@skyway-sdk/sfu-client

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@skyway-sdk/sfu-client

The official Next Generation JavaScript SDK for SkyWay

  • 0.2.0-beta.0
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

SFU Client SDK

SkyWay Core SDK で SFU Bot を利用するためのプラグイン です。

インストール方法

npm i @skyway-nv/sfu-client

SFU Bot のしくみ

P2P での WebRTC は、各 PersonMember が通信したい各 PersonMember に対してそれぞれデータの配信を行う必要があるので、 PersonMember 数が増えてくると各 PersonMember の上りのトラフィックコストとメディアのエンコード処理がボトルネックになります。

SFU Bot は、 PersonMember から一本の上りトラフィックを受信し、代わりに他の PersonMember に対してそれを配信することで、クライアントの負荷を軽減し、大規模な WebRTC 利用を可能にします。

利用方法

プラグインの登録

Core SDK で SFU 機能を有効化するために Plugin を Core SDK に登録する必要があります。

import { SkyWayContext } from '@skyway-nv/core';
import { registerSfuPlugin } from '@skyway-nv/sfu-client';

const context = await SkyWayContext.Create('token');
const plugin = new SfuClientPlugin();
context.registerPlugin(plugin);

SFU Bot の呼び出し

Channel で SFU Bot を利用するために、対象の Channel に SFU Bot を呼び出す必要があります。

const context = await SkyWayContext.Create('token');
const plugin = new SfuClientPlugin();
context.registerPlugin(plugin);

const channel = await Channel.FindOrCreate(context, { name: 'test' });
// SFU BotをChannelに呼び出す。
const bot = await plugin.createBot(channel);

Publication の Forwarding

SFU Bot に Channel 上の Publication を Forwarding させます。

これにより、SFU Bot は、 PersonMember から一本の上りトラフィックを受信し、代わりに他の PersonMember に対してそれを配信します。

const person = await channel.join();

const stream = await MediaDevices.createCameraVideoStream();
const publication = await person.publish(stream);

// PersonMemberがPublishしたStreamのPublicationをSFU BotにForwardingさせる
const forwarding = await bot.startForwarding(publication);

PersonMember は SFU Bot が Forwarding している Publication を Subscribe することで、SFU 経由で Stream を受け取ることができます。

Publication の種類の見分け方

SFU Bot を利用する場合、Channel 上には PersonMember が Publish した Publication と SFU Bot がその Publication を Forwarding している Publication の 2 種類の Publication が存在します。

PersonMember が SFU Bot 経由で配信されている Publication だけを Subscribe する方法について説明します。

channel.onStreamPublished.add(({ publication }) => {
  if (publication.publisher.subtype === 'sfu') {
    console.log('published by SFU');
    person.subscribe(publication.id);
  }
});

Publication の Publisher の SubType から Publication の Publisher の種類を識別できます。

FAQs

Package last updated on 17 Feb 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc