Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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 如何在Webrtc视频呼叫中实现socket.io,以及我必须在server.js中更改什么?_Javascript_Socket.io_Webrtc - Fatal编程技术网

Javascript 如何在Webrtc视频呼叫中实现socket.io,以及我必须在server.js中更改什么?

Javascript 如何在Webrtc视频呼叫中实现socket.io,以及我必须在server.js中更改什么?,javascript,socket.io,webrtc,Javascript,Socket.io,Webrtc,如何在Webrtc视频呼叫中实现socket.io?有点过载,但它可以工作:我从您的问题中了解到,您已经在server.js中有一个Webrtc项目和一些信号机制,可能是websockets 要用socket.io或任何其他信号(如SIP/XHR/AJAX等)替换它,您需要用新的基于socket.io的请求和响应代码替换server.js 遵循以下步骤: 为socket.io创建https服务器(因为webrtc页面仅从安全来源捕获web cam输入)。将服务器分配给一个变量,例如app var

如何在Webrtc视频呼叫中实现socket.io?

有点过载,但它可以工作:

我从您的问题中了解到,您已经在server.js中有一个Webrtc项目和一些信号机制,可能是websockets

要用socket.io或任何其他信号(如SIP/XHR/AJAX等)替换它,您需要用新的基于socket.io的请求和响应代码替换server.js

遵循以下步骤:

  • 为socket.io创建https服务器(因为webrtc页面仅从安全来源捕获web cam输入)。将服务器分配给一个变量,例如app

    var fs = require('fs');
    var https = require('https');
    
    var options = {
      key: fs.readFileSync('ssl_certs/server.key'),
      cert: fs.readFileSync('ssl_certs/server.crt'),
      ca: fs.readFileSync('ssl_certs/ca.crt'),
      requestCert: true,
      rejectUnauthorized: false
    };
    
    var app = https.createServer(options, function(request, response){
            request.addListener('end', function () {
            file.serve(request, response);
        }).resume();     
    });
    
    app.listen(8081);
    
  • 这里server.key、server.crt和ca.crt是假的ssl证书,8081是我选择的https端口。 您也可以重用相同的https服务器来托管网页

  • 使用前面定义的app在同一端口上侦听socket.io

    var io = require('socket.io').listen(app, {
        log: false,
        origins: '*:*'
    });
    
    io.set('transports', [
        'websocket'
    ]);
    
  • 我只选择websocket,但您也可以设置其他类型的传输,例如

    socket.set('transports', [
        'websocket'
      , 'flashsocket'
      , 'htmlfile'
      , 'xhr-polling'
      , 'jsonp-polling'
    ]);
    
  • 现在实现特定于信令的功能和调用,例如

    io.sockets.on('connection', function (socket) {
        ...
            socket.on('webrtc-joinchannel',function(data){
                var resp=joinChannel(data);
           socket.emit('resp-webrtc-joinchannel', resp);
            });
    ...
    });
    
  • 注意:我使用的是socket.io v0.9。

    如果您想要一个示例实现,您可以查看任何示例项目,例如