Ich stellte ein Chat-System her, das dir erlaubt, Leute zu verbinden, um Videochat zu verbinden.Wie man zwei spezifische Klienten durch Identifikation unter Verwendung websockets verbindet
Das Problem ist, ich muss zwei Clients über WebRTC basierend auf einer ID oder etwas verbinden, die mir erlaubt, zwischen Clients zu unterscheiden.
Im Moment ist die Verbindung zufällig. Mein Code sucht einfach nach einem vorhandenen Kandidaten und stellt eine Verbindung zu ihnen her.
Ich habe versucht, eine ID-Kunden auf diese Weise einstellen ...
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({port: 8080}),
CLIENTS=[];
wss.on('connection', function(ws) {
CLIENTS.push(ws);
ws.on('message', function(message) {
console.log('received: %s', message);
sendAll(message);
});
ws.send("NEW USER JOINED");
});
Wo CLIENTS
Spur jeder individul Client halten.
Aber immer noch löst das mein Problem nicht. Dies ist mein client.js code ...
window.onload = function(){
navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
window.RTCIceCandidate = window.RTCIceCandidate || window.mozRTCIceCandidate || window.webkitRTCIceCandidate;
window.RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.webkitRTCSessionDescription;
window.RTCPeerConnectionErrorCallback = window.RTCPeerConnectionErrorCallback || window.mozRTCPeerConnectionErrorCallback || window.webkitRTCPeerConnectionErrorCallback;
serverConnection = new WebSocket('ws://127.0.0.1:3434');
serverConnection.onmessage = gotMessageFromServer;
serverConnection.onmessage = gotMessageFromServer;
var constraints = {
video: true,
audio: false,
};
if(navigator.getUserMedia) {
navigator.getUserMedia(constraints, getUserMediaSuccess, getUserMediaError);
} else {
alert('Your browser does not support getUserMedia API');
}
}
function getUserMediaSuccess(stream) {
localStream = stream;
video.src = window.URL.createObjectURL(stream);
}
function getUserMediaError(error) {
console.log(error);
}
function errorHandler(error) {
console.log(error);
}
function start(isCaller) {
peerConnection = new RTCPeerConnection(peerConnectionConfig);
peerConnection.onicecandidate = gotIceCandidate;
peerConnection.onaddstream = gotRemoteStream;
peerConnection.addStream(localStream);
if(isCaller) {
peerConnection.createOffer(gotDescription, createOfferError);
}
}
function gotDescription(description) {
console.log('got description');
peerConnection.setLocalDescription(description, function() {
serverConnection.send(JSON.stringify({'sdp': description}));
}, function() {console.log('set description error')});
}
function gotIceCandidate(event) {
if(event.candidate != null) {
serverConnection.send(JSON.stringify({'ice': event.candidate}));
}
}
function gotRemoteStream(event) {
console.log("got remote stream");
remote.src = window.URL.createObjectURL(event.stream);
}
function createOfferError(error) {
console.log(error);
}
function gotMessageFromServer(message) {
if(!peerConnection) start(false);
var signal = JSON.parse(message.data);
if(signal.sdp) {
peerConnection.setRemoteDescription(new RTCSessionDescription(signal.sdp), function() {
peerConnection.createAnswer(gotDescription, errorHandler);
}, errorHandler);
} else if(signal.ice) {
peerConnection.addIceCandidate(new RTCIceCandidate(signal.ice));
}
}
Wie kann ich Clients eine ID zuweisen und sie anhand ihrer IDs verbinden? Zum Beispiel, wenn ich client1
habe und ihn mit client2
verbinden möchte, damit diese zwei Videos miteinander teilen können, wie kann ich das tun?
webRTC ist unglaublich schwierig als Anfänger, jede Anleitung ist hilfreich.