如何在 Webrtc 视频调用中实现 socket.io 以及我必须在 server.js 中更改啥?
Posted
技术标签:
【中文标题】如何在 Webrtc 视频调用中实现 socket.io 以及我必须在 server.js 中更改啥?【英文标题】:How to do socket.io implementation in Webrtc Video calling and what i have to change in the server.js?如何在 Webrtc 视频调用中实现 socket.io 以及我必须在 server.js 中更改什么? 【发布时间】:2013-03-01 10:03:12 【问题描述】:如何在Webrtc视频通话中实现socket.io?
【问题讨论】:
【参考方案1】:有点超载但它有效:SocialVidRTC
【讨论】:
【参考方案2】:我从您的问题中了解到,您已经有一个 WebRTC 项目和 server.js 中的一些信号机制,可能是 websockets 。
要将其替换为 socket.io 或任何其他信号,如 SIP / XHR / AJAX 等,您需要将 server.js 替换为基于 socket.io 的新代码以进行请求和响应。
按照以下步骤操作:
为 socket.io 创建一个 https 服务器(因为 webrtc 页面仅从安全来源捕获网络摄像头输入)。将服务器分配给一个变量,比如 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。
如果您想要示例实现,您可以查看任何示例项目,例如 here
【讨论】:
以上是关于如何在 Webrtc 视频调用中实现 socket.io 以及我必须在 server.js 中更改啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Hybrid iOS 应用程序中实现 WebRTC?