Frontend sdk for the Ion backend.
npm install ion-sdk-js
import { Client, LocalStream, RemoteStream } from 'ion-sdk-js';
import { IonSFUJSONRPCSignal } from 'ion-sdk-js/lib/signal/json-rpc-impl';
const signal = new IonSFUJSONRPCSignal("wss://ion-sfu:7000/ws");
const client = new Client(signal);
signal.onopen = () => client.join("test session", "test uid")
// Setup handlers
client.ontrack = (track: MediaStreamTrack, stream: RemoteStream) => {
// mute a remote stream
stream.mute()
// unmute a remote stream
stream.unmute()
if (track.kind === "video") {
// prefer a layer
stream.preferLayer("low" | "medium" | "high")
}
});
// Get a local stream
const local = await LocalStream.getUserMedia({
audio: true,
video: true,
simulcast: true, // enable simulcast
});
// Publish stream
client.publish(local);
// mute local straem
local.mute()
// unmute local stream
local.unmute()
// create a datachannel
const dc = client.createDataChannel("data")
dc.onopen = () => dc.send("hello world")
// Close client connection
client.close();