mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-08 08:39:59 +00:00
Move receiver to docs for hosting
This commit is contained in:
9
docs/receiver/index.css
Normal file
9
docs/receiver/index.css
Normal file
@@ -0,0 +1,9 @@
|
||||
body {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
#media {
|
||||
max-height: 100vh;
|
||||
max-width: 100vw;
|
||||
}
|
||||
10
docs/receiver/index.html
Normal file
10
docs/receiver/index.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js"></script>
|
||||
<link rel="stylesheet" href="index.css">
|
||||
</head>
|
||||
<body>
|
||||
<video id="media" autoplay></video>
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
66
docs/receiver/index.js
Normal file
66
docs/receiver/index.js
Normal file
@@ -0,0 +1,66 @@
|
||||
"use strict";
|
||||
|
||||
const NAMESPACE = "urn:x-cast:fx_cast";
|
||||
|
||||
const castReceiverManager = cast.receiver.CastReceiverManager.getInstance();
|
||||
|
||||
const mediaElement = document.querySelector("#media");
|
||||
const mediaManager = new cast.receiver.MediaManager(mediaElement);
|
||||
mediaElement.width = window.innerWidth;
|
||||
|
||||
|
||||
let senderId;
|
||||
|
||||
const messageBus = castReceiverManager.getCastMessageBus(
|
||||
NAMESPACE
|
||||
, cast.receiver.CastMessageBus.MessageType.JSON);
|
||||
|
||||
|
||||
const pc = new RTCPeerConnection();
|
||||
|
||||
pc.addEventListener("icecandidate", ev => {
|
||||
messageBus.send(senderId, {
|
||||
subject: "iceCandidate"
|
||||
, data: ev.candidate
|
||||
});
|
||||
});
|
||||
pc.addEventListener("addstream", ev => {
|
||||
mediaElement.srcObject = ev.stream;
|
||||
mediaElement.webkitRequestFullscreen();
|
||||
});
|
||||
|
||||
messageBus.onMessage = async message => {
|
||||
const { subject, data } = message.data;
|
||||
|
||||
senderId = message.senderId;
|
||||
|
||||
switch (subject) {
|
||||
case "peerConnectionOffer":
|
||||
await pc.setRemoteDescription(data);
|
||||
const desc = await pc.createAnswer();
|
||||
await pc.setLocalDescription(desc);
|
||||
messageBus.send(message.senderId, {
|
||||
subject: "peerConnectionAnswer"
|
||||
, data: desc
|
||||
});
|
||||
break;
|
||||
|
||||
case "iceCandidate":
|
||||
console.log(data);
|
||||
await pc.addIceCandidate(data);
|
||||
break;
|
||||
|
||||
case "close":
|
||||
window.close();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
// TODO: Fix APi shim to make this work
|
||||
castReceiverManager.onSenderDisconnected = ev => {
|
||||
if (castReceiverManager.getSenders().length <= 0) {
|
||||
window.close();
|
||||
}
|
||||
};
|
||||
|
||||
castReceiverManager.start();
|
||||
Reference in New Issue
Block a user