рдореИрдВ рдЕрднреА рддрдХ рд╕рд┐рдЧреНрдирд▓ рд╕рд░реНрд╡рд░ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рдирд╣реАрдВ рд╣реБрдЖ рд╣реВрдВ рдЬрдм рдПрдХ рдорд▓реНрдЯреА-рдпреВрдЬрд░ рдЪреИрдЯ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рддреИрдпрд╛рд░ рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рд╢реБрд░реВ рдХрд░ рджреАред рд╕рдм рд╕реЗ рдЖрд╕рд╛рди рдореБрдЭреЗ EasyRTC рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреЛрдиреЛрдВ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░:
1. рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ Node.js. рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
2. рдЬреАрдердм рд╕реЗ, рд╣рдо рдЖрд╕рд╛рди рдЖрд░рдЖрд░рдЯреАрд╕реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВред
3. рд╣рдо рдХрдВрд╕реЛрд▓ npm рд╕реНрдерд╛рдкрд┐рдд рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ (рдореИрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП easyRTC рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ) Node.js рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ
4. рд╡рд╣рд╛рдБ рд╣рдо рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рд░реНрд╡рд░ рднреА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: рдиреЛрдб server.jsред
рд╕рднреА !!! рдЕрдм, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХреЗ 8080 рдХреЗ рд╕рдордп, easyRTC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдкрдиреА рдЪреИрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреГрд╖реНрда рдкрд░ socket.io.js рдФрд░ easyrtc.js рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрдм nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ "рдкреНрд░реЙрдХреНрд╕реА" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:
рдЕрдкрд╕реНрдЯреНрд░реАрдо backendEasyRTC {
рд╕рд░реНрд╡рд░ 127.0.0.1:9080;
}
рд╕рд░реНрд╡рд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ:
рд╕реНрдерд╛рди /socket.io {
#proxy_pass http: // 127.0.0.1:9080;
рдкреНрд░реЙрдХреНрд╕реА_рдкрд╛рд╕ http: // backendEasyRTC;
рдкреНрд░реЙрдХреНрд╕реА_рд╣реЗрдЯрдк_рд╡реЙрд╕ 1.1;
xy_set_header рдЕрдкрдЧреНрд░реЗрдб $ http_upgrad;
рдкреНрд░реЙрдХреНрд╕реА_рд╕реЗрдЯ_рд╣рд╛рдЗрдбрд░ рдХрдиреЗрдХреНрд╢рди "рдЕрдкрдЧреНрд░реЗрдб";
xy_set_header рд╣реЛрд╕реНрдЯ $ рд╣реЛрд╕реНрдЯ;
}
Socket.io.js рдФрд░ easyrtc.js (рдЬреЛ рдПрдкреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ) рдХреНрд░рдорд╢рдГ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ easyRTC рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
Easyrtc.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, easyRTC.webSocket рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓реЗрдВ:
easyRTC.webSocket = io.connect ('http: // your server');
рдФрд░ config.js рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ (рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд) рдореЗрд░реЗ рдорд╛рдирдХ 9080 рдореЗрдВ, рдЖрдкрдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкреЛрд░реНрдЯ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ:
config.httpPort = 9080;
рдЕрдкрдиреЗ рдкреГрд╖реНрда рдкрд░, рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
<script src = "/ socket.io/socket.io.js"> </ script>
<script type = "text / javascript" src = "/ static / js / easyrtc.js"> / / />
рд╡рд┐рдбрд┐рдпреЛ рдЯреИрдЧреНрд╕ рджреЗрдВ:
рджреВрд░рд╕реНрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП
<рд╡реАрдбрд┐рдпреЛ рдСрдЯреЛрдкреНрд▓реЗ = "рдСрдЯреЛрдкреНрд▓реЗ" рдЖрдИрдбреА = "RemoteVideo1"> </ рд╡реАрдбрд┐рдпреЛ>
<рд╡реАрдбрд┐рдпреЛ рдСрдЯреЛрдкреНрд▓реЗ = "рдСрдЯреЛрдкреНрд▓реЗ" рдЖрдИрдбреА = "RemoteVideo2"> </ рд╡реАрдбрд┐рдпреЛ>
рдФрд░ рдЦреБрдж рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
<video autoplay = "autoplay" id = "localVideo" рдореМрди = "рдореМрди" рдЖрдпрддрди = "0"> </ рд╡реАрдбрд┐рдпреЛ>
рд╣рдо рдкреГрд╖реНрда рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ easyRTC рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
var maxCALLERS = 3; // рдХрдорд░реЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
window.onload - function () {
easyRTC.setLoggedInListener (callEverybodyElse); // рдЬрдм рдПрдХ рдирдИ рдзрд╛рд░рд╛ webrtc рд╣реЛрддреА рд╣реИ
easyRTC.initManaged ("myroom", "localVideo", ["RemoteVideo1", "RemoteVideo2], loginSuccess);
// myroom - рдЙрд╕ рдХрдорд░реЗ рдХрд╛ рдирд╛рдо рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрдВрдЧреЗ
// localVideo - рдЖрдкрдХрд╛ рд╡реАрдбрд┐рдпреЛ
// ["RemoteVideo1", "RemoteVideo2] - рдЬрд╣рд╛рдВ рджреВрд░рджрд░рд╛рдЬ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
// loginSuccess - рдЗрд╕рдореЗрдВ рдЖрдк рдЕрдкрдиреА рд╕реНрдЯреНрд░реАрдо рдЖрдИрдбреА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ
}
рдлрд╝рдВрдХреНрд╢рди рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ рдЕрд╕рдлрд▓ (easyRTCId) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдореЗрд░реА рдЖрдИрдбреА' + easyRTCId); // рдЖрдЧреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ
}
рд╕рдорд╛рд░реЛрд╣ callEverybodyElse (рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ) {
easyRTC.setLoggedInListener (рдирд▓);
var рд╕реВрдЪреА = [];
var ConnectCount = 0;
рдХреЗ рд▓рд┐рдП (var рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдореЗрдВ) {
list.push (i);
}
// рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдирдИ рд╕реНрдЯреНрд░реАрдо рд╕рд░рдгреА рдореЗрдВ рдЕрдВрддрд┐рдо рд╣реИ
рд╕рдорд╛рд░реЛрд╣ рд╕реНрдерд╛рдкрдирд╛ (рд╕реНрдерд┐рддрд┐) {
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░реЗрдВ рдЕрд╕рдлрд▓ () {
рдХрдиреЗрдХреНрдЯрдХрд╛рдЙрдВрдЯ ++;
рдЕрдЧрд░ (рдХрдиреЗрдХреНрдЯ рдХрдиреЗрдХреНрдЯ <maxCALLERS && рд╕реНрдерд┐рддрд┐> 0) {
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (рд╕реНрдерд┐рддрд┐ -1);
}
}
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдлрд╝реЗрд▓реНрдпреЛрд░ () {
easyRTC.showError ("CALL-REJECTED", "рдЕрдиреНрдп рдкрд╛рд░реНрдЯреА рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХреГрдд");
рдЕрдЧрд░ (рдХрдиреЗрдХреНрдЯ рдХрдиреЗрдХреНрдЯ <maxCALLERS && рд╕реНрдерд┐рддрд┐> 0) {
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (рд╕реНрдерд┐рддрд┐ -1);
}
}
easyRTC.call (рд╕реВрдЪреА [рд╕реНрдерд┐рддрд┐], callSuccess, callFailure);
}
рдЕрдЧрд░ (рд╕реВрдЪреАред рдЧрддрд┐> 0) {
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (list.length -1);
}
}
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдХрдиреЗрдХреНрд╢рди рдкреЛрд░реНрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
easyRTC.setSocketUrl (": 9088");
рдмрд┐рдЯрд░реЗрдЯ рд╡реАрдбрд┐рдпреЛ:
easyRTC.setVideoBandwidth (40);
рд╡реАрдбрд┐рдпреЛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди:
easyRTC.setVideoDims (320,180); - рд╡реАрдбрд┐рдпреЛ рд╕рдВрдХрд▓реНрдк
рдпрд╣ рдмрд╣реБ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪреИрдЯ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, config.js easyrtc.js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде Github рдФрд░ Google рд╕рдореВрд╣реЛрдВ рдкрд░ рднреАред
рдЕрдВрдд рддрдХ рдкрдврд╝реЗ рддреЛ рдзрдиреНрдпрд╡рд╛рджред
рд╡реЗрдмрд╕рд╛рдЗрдЯ:
http://www.easyrtc.com/рдЧрд┐рдердм:
https://github.com/priologic/easyrtcGoogle рд╕рдореВрд╣:
https://groups.google.com/d/forum/easyrtc