Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用node.js进行一对多/广播的Webrtc_Javascript_Webrtc - Fatal编程技术网

Javascript 使用node.js进行一对多/广播的Webrtc

Javascript 使用node.js进行一对多/广播的Webrtc,javascript,webrtc,Javascript,Webrtc,我从下面的网站上得到了这个代码 html文件 <!DOCTYPE html> <html> <head> <meta name='keywords' content='WebRTC, HTML5, JavaScript' /> <meta name='description' content='WebRTC Reference App' /> <meta name='viewport' content='width=device

我从下面的网站上得到了这个代码

html文件

<!DOCTYPE html>
<html>
<head>

<meta name='keywords' content='WebRTC, HTML5, JavaScript' />
<meta name='description' content='WebRTC Reference App' />
<meta name='viewport' content='width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1'>

<base target='_blank'>

<title>WebRTC client</title>

<!-- <link rel='stylesheet' href='css/main.css' /> -->

</head>

<body>

<div id='container'>

  <div id='videos'>
    <video id='localVideo' autoplay muted></video>
    <video id='remoteVideo' autoplay></video>
  </div>

</div>

<script src='/socket.io/socket.io.js'></script>
<script src='js/main.js'></script>

</body>
</html>
到numClients==2,但它不起作用。屏幕上没有显示任何内容

更新 我在main.js中有这个

function handleRemoteStreamAdded(event) {
  console.log('Remote stream added.');
  remoteVideo.src = window.URL.createObjectURL(event.stream);
  remoteStream = event.stream;
}
因此,上述函数更改为

function handleRemoteStreamAdded(event){
remoteVideo = document.createElement('video');
if(document.getElementById( "remoteVideos" ).childNodes.length == 0){
    remoteVideo.setAttribute('id','remoteVideo1');
} else {
    remoteVideo.setAttribute('id','remoteVideo2');
}
document.getElementById( "remoteVideos" ).appendChild(remoteVideo);
remoteVideo.src = window.URL.createObjectURL(event.stream);
remoteVideo.play();

}
更新2

我得到这个错误。

是因为

io.sockets.in(room).emit('join', room);
调用一个已创建的套接字连接(客户端),但当您有
numClients==2
意味着你需要告诉另外两个客户发送他们的信息

所以,使用

var clients = io.sockets.clients(room);
clients.forEach(function(client){
    client.emit('join', room);
    client.join(room);
    client.emit('joined', room);
});
这应该能奏效

甚至在html上 替换


回复的Thnx..我应该把它添加到else循环吗?例如这里`else if(numClients==1){io.sockets.in(room).emit('join',room);socket.join(room);socket.emit('join',room);`???那么我的代码现在变成这样了吗
else if(numClients==1){var clients=io.sockets.clients(room);clients.forEach(客户端,函数(客户端){client.emit('join',room);});socket.join(room);socket.emit('join',room);
我修改了forEach语句,这是一个简单的语法问题。你能把它也添加到我上面的代码中吗?因为我不知道它是否在if循环中..我已经在我上面的问题中添加了你让我编辑的函数。我需要将它添加到该语句中还是清除其中的所有内容并添加你的代码?
io.sockets.in(room).emit('join', room);
var clients = io.sockets.clients(room);
clients.forEach(function(client){
    client.emit('join', room);
    client.join(room);
    client.emit('joined', room);
});
<video id='remoteVideo' autoplay></video>
<div id="remoteVideos"></div>
remoteVideo = document.createElement('video');
if(document.getElementById( "remoteVideos" ).childNodes.length == 0){
    remoteVideo.setAttribute('id','remoteVideo1');
} else {
    remoteVideo.setAttribute('id','remoteVideo2');
}
document.getElementById( "remoteVideos" ).appendChild(remoteVideo);
remoteVideo.src = window.URL.createObjectURL(event.stream);
remoteVideo.play();