我正在尝试使用 webRTC 和 WebSockets 进行信号发送来开发视频聊天应用程序。
我的问题是,我不知道创建 RTCPeerConnection 并通过 webSocket 连接两个对等点(2 个浏览器)的过程是什么(至少在本地)。
我知道如何通过 WebSockets 与客户端进行通信,但不知道如何使用 RTCPeerConnection API,您知道如何逐步解释该过程的教程吗?(提供 SDP、答案、ICE,...),另一方面,看起来如何通过 RTCPeerConnection 管理这些客户端的服务器代码?
这是我的服务器 Node.js 代码
"use strict";
// Optional. You will see this name in eg. 'ps' or 'top' command
process.title = 'node-webrtc';
// Port where we'll run the websocket server
var webSocketsServerPort = 1337;
// websocket and http servers
var webSocketServer = require('websocket').server;
var http = require('http');
/* ---------------------------------
GLOBAL VARIABLES
----------------------------------*/
// latest 100 messages
//var history = [ ];
// list of currently connected clients (users)
var clients = [ ];
/* ---------------------------------
HTTP SERVER
----------------------------------*/
var server = http.createServer(function(request, response) {
// Not important for us. We're writing WebSocket server, not HTTP server
});
server.listen(webSocketsServerPort, function() {
console.log((new Date()) + " Server is listening on port " + webSocketsServerPort);
});
/* ---------------------------------
WEBSOCKET SERVER
----------------------------------*/
var wsServer = new webSocketServer({
// WebSocket server is tied to a HTTP server. WebSocket request is just
// an enhanced HTTP request. For more info http://tools.ietf.org/html/rfc6455#page-6
httpServer: server
});
// This callback function is called every time someone
// tries to connect to the WebSocket server
wsServer.on('request', function(request) {
console.log((new Date()) + ' Connection from origin ' + request.origin + '.');
// accept connection - you should check 'request.origin' to make sure that
// client is connecting from your website
// (http://en.wikipedia.org/wiki/Same_origin_policy)
var connection = request.accept(null, request.origin);
// we need to know client index to remove them on 'close' event
var index = clients.push(connection) - 1;
console.log((new Date()) + ' Connection accepted.');
// user sent some message
connection.on('message', function(message) {
for (var i=0; i < clients.length; i++) {
clients[i].sendUTF(message);
}
});
// user disconnected
connection.on('close', function(conn) {
console.log((new Date()) + " Peer " + conn.remoteAddress + " disconnected.");
// remove user from the list of connected clients
clients.splice(index, 1);
});
});
您可能想看看我为 Google I/O 所做的 Codelab:bitbucket.org/webrtc/codelab https://bitbucket.org/webrtc/codelab.
Step 5 https://bitbucket.org/webrtc/codelab/src/6daf0496dc78e1704cb9b71b9e897e829a347561/complete/step5?at=master展示如何使用 socket.io 设置信令服务器,以及Step 6 https://bitbucket.org/webrtc/codelab/src/6daf0496dc78e1704cb9b71b9e897e829a347561/complete/step6?at=master将其与 RTCPeerConnection 结合起来制作一个简单的视频聊天应用程序。
您可能还想看看easyRTC https://github.com/priologic/easyrtc(全栈)和信号大师 https://github.com/andyet/signalmaster(为以下目的创建的信令服务器简单WebRTC https://github.com/HenrikJoreteg/SimpleWebRTC).
“规范”WebRTC 视频聊天示例位于apprtc.appspot.com http://apprtc.appspot.com使用 XHR 和 Google App Engine Channel API 进行信号发送。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)