-3

如何在 Webrtc 视频通话中实现 socket.io?

4

2 回答 2

0

有点超载但它有效:SocialVidRTC

于 2013-03-25T08:32:28.700 回答
0

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

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

按着这些次序 :

  1. 为 socket.io 创建一个 https 服务器(因为 webrtc 页面仅从安全来源捕获网络摄像头输入)。将 server 分配给变量说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 服务器来托管网页。

  1. 使用前面定义的应用程序在 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'
]);
  1. 现在实现信令特定功能和调用,例如,

    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。

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

于 2016-06-24T05:48:10.660 回答