RayStreaming SDK for Web
Guides
Quick start
import { Launcher } from 'ray-streaming-extra-ue4'
const appId = 'xxxxxxxxxxxxxxxxxxx'
const address = 'http://xxx.xxx.xxx.xxx:xxxx'
new Launcher({ address, appId }).automata()
Manual
import { Client, Connection } from 'ray-streaming-extra-ue4'
const client = new Client('TARGET_ENVIRONMENT_ADDRESS')
client
.getSessionInfo()
.then((res) => res.data)
.then(({ token, signaling }) => {
})
client.start({ appId: 'THE_APP_WHICH_WANT_TO_RUN', token })
client.status(appId, token).then((res) => {
if (res.data.status === 'running') {
}
})
const connection = new Connection(
`${signaling}/clientWebsocket/${token}`,
iceConfig,
)
connection.event.receivedVideo.on((media) => {
})
connection.attachListener(video)
API reference
Connection
Manage the Signaling and PeerConnection connection with node machine
new Connection(url, iceServers[, iceTransportPolicy])
connection.emitUIInteraction(msg)
Send UI interaction message to remote application
connection.emitUIInteraction(JSON.stringify({ eventName: 'A' })).then((result) => {
if (result) {
console.log('execute success')
}
})
connection.destory()
Close all connect, off event listener
Player
Provide the container to play the remote stream,
new Player(hostElement[, onPlay[, loadingBgImage[, voicedAtPlay])
hostElement
<HTMLElement> any block element with fixed sizeonPlay
<() => void> invoke when video playloadingBgImage
<string> customize background loading image in app's loading stagevoicedAtPlay
<boolean> remove muted attribute when play if set true Default: true
player.resizePlayer()
Resize player style to fill host element if host element size is smaller than player or resize player style to actual size
player.showTextOverlay(text)
Show prompt with specify text and mask video stream
player.showLoadingText(msg)
show message on loading element, append loading overlay element to player overlay element at first time
player.destory()
Remove created elementsh
Launcher
Automate start-up application by the HTTP request, setup Player and Connection instance, then attach listener and Instantiate Virtual Control after DataChannel open
new Launcher(option).automata([hostElement])
Field | Type | Description |
---|
appId | string | App ID |
token | string | room secret |
bitrate | number(optional) | append x-google-max-bitrate in creact offer |
minBitrate | number(optional) | x-google-min-bitrate(same as bitrate field) |
startBitrate | number(optional) | x-google-start-bitrate(same as bitrate field) |
virtualComponent | VirtualControlDisplayType(optional) | 1: display all;2:display fullscreen only;3:hide all |
Caveat
- Need to initialize
Player
after WeixinJSBridgeReady
event fired if use in WeChat web-view
if (navigator.userAgent.includes('miniProgram') || navigator.userAgent.includes('MicroMessenger')) {
document.addEventListener('WeixinJSBridgeReady', () => {
})
}
- If you use with cjs or esm module system, need to provide
process.env.NODE_NEV
at runtime