Update: Channel Based VC (Same Issues)
This commit is contained in:
@@ -11,8 +11,8 @@
|
||||
<script>
|
||||
let peerConnection = null;
|
||||
let localStream = null;
|
||||
let currentTarget = null;
|
||||
let currentUsername = null;
|
||||
let currentChannelId = null;
|
||||
let availableCameras = [];
|
||||
let availableMics = [];
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
LogMessage("Username set to: " + currentUsername);
|
||||
};
|
||||
|
||||
window.setChannelId = function(channelId) {
|
||||
currentChannelId = channelId;
|
||||
LogMessage("Channel set to: " + currentChannelId);
|
||||
};
|
||||
|
||||
function LogMessage(msg) {
|
||||
const messageLog = document.getElementById("messageLog");
|
||||
messageLog.value += '\r\n' + msg;
|
||||
@@ -43,12 +48,12 @@
|
||||
});
|
||||
|
||||
peerConnection.onicecandidate = async (event) => {
|
||||
if (!event.candidate || !currentTarget || !currentUsername) return;
|
||||
if (!event.candidate || !currentChannelId || !currentUsername) return;
|
||||
|
||||
const payload = {
|
||||
type: "rtc_ice_candidate",
|
||||
from: currentUsername,
|
||||
to: currentTarget,
|
||||
channelId: currentChannelId,
|
||||
candidate: event.candidate.candidate,
|
||||
sdpMid: event.candidate.sdpMid,
|
||||
sdpMLineIndex: event.candidate.sdpMLineIndex
|
||||
@@ -169,20 +174,20 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function startCall() {
|
||||
async function joinChannelCall() {
|
||||
LogMessage("Current username: " + currentUsername);
|
||||
try {
|
||||
currentTarget = document.getElementById("targetUser").value;
|
||||
LogMessage("Current channel: " + currentChannelId);
|
||||
|
||||
if (!currentTarget) {
|
||||
LogMessage("No target user set.");
|
||||
try {
|
||||
if (!currentChannelId) {
|
||||
LogMessage("No current channel set.");
|
||||
return;
|
||||
}
|
||||
|
||||
await ensurePeerConnection();
|
||||
await ensureLocalMedia();
|
||||
|
||||
LogMessage(`Starting call with media: audio=${hasAudioTrack()} video=${hasVideoTrack()}`);
|
||||
|
||||
LogMessage(`Joining call with media: audio=${hasAudioTrack()} video=${hasVideoTrack()}`);
|
||||
|
||||
const offer = await peerConnection.createOffer();
|
||||
await peerConnection.setLocalDescription(offer);
|
||||
@@ -190,14 +195,14 @@
|
||||
const payload = {
|
||||
type: "rtc_offer",
|
||||
from: currentUsername,
|
||||
to: currentTarget,
|
||||
channelId: currentChannelId,
|
||||
sdp: offer.sdp
|
||||
};
|
||||
|
||||
LogMessage("Sending offer to " + currentTarget);
|
||||
LogMessage("Sending offer to channel " + currentChannelId);
|
||||
await window.HybridWebView.InvokeDotNet("SendRtcSignal", [JSON.stringify(payload)]);
|
||||
} catch (err) {
|
||||
LogMessage("startCall failed: " + err);
|
||||
LogMessage("joinChannelCall failed: " + err);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,13 +210,12 @@
|
||||
try {
|
||||
const msg = typeof rawJson === "string" ? JSON.parse(rawJson) : rawJson;
|
||||
|
||||
LogMessage("Received signal: " + msg.type + " from " + msg.from);
|
||||
LogMessage("Received signal: " + msg.type + " from " + msg.from + " in " + msg.channelId);
|
||||
|
||||
await ensurePeerConnection();
|
||||
|
||||
if (msg.type === "rtc_offer") {
|
||||
currentTarget = msg.from;
|
||||
LogMessage("Incoming call from " + msg.from);
|
||||
LogMessage("Incoming channel call offer from " + msg.from);
|
||||
await ensureLocalMedia();
|
||||
|
||||
LogMessage(`Answering call with media: audio=${hasAudioTrack()} video=${hasVideoTrack()}`);
|
||||
@@ -228,11 +232,11 @@
|
||||
const payload = {
|
||||
type: "rtc_answer",
|
||||
from: currentUsername,
|
||||
to: msg.from,
|
||||
channelId: msg.channelId,
|
||||
sdp: answer.sdp
|
||||
};
|
||||
|
||||
LogMessage("Sending answer to " + msg.from);
|
||||
LogMessage("Sending answer to channel " + msg.channelId);
|
||||
await window.HybridWebView.InvokeDotNet("SendRtcSignal", [JSON.stringify(payload)]);
|
||||
return;
|
||||
}
|
||||
@@ -335,10 +339,8 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="targetUser">Target User:</label>
|
||||
<input id="targetUser" type="text" value="Ru_Kira" />
|
||||
<button onclick="loadDevices()">Refresh Devices</button>
|
||||
<button onclick="startCall()">Start Call</button>
|
||||
<button onclick="joinChannelCall()">Join Call</button>
|
||||
</div>
|
||||
|
||||
<div style="margin-top: 8px;">
|
||||
|
||||
Reference in New Issue
Block a user