如何在 Webrtc 视频通话中实现 socket.io?
问问题
794 次
2 回答
0
有点超载但它有效:SocialVidRTC
于 2013-03-25T08:32:28.700 回答
0
我从您的问题中了解到,您已经在 server.js 中有一个 WebRTC 项目和一些信号机制,可能是 websockets 。
要将其替换为 socket.io 或任何其他信号如 SIP/XHR/AJAX 等,您需要将 server.js 替换为新的基于 socket.io 的请求和响应代码。
按着这些次序 :
为 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 服务器来托管网页。
使用前面定义的应用程序在 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。
如果你想要一个示例实现,你可以查看任何示例项目,例如这里
于 2016-06-24T05:48:10.660 回答