рд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреНрд░рдгрд╛рд▓реАред рдЕрдм Node.js + Socket.IO рдкрд░

рд╢реБрдн рджреЛрдкрд╣рд░

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ Node.js рдФрд░ Socket.IO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЫрд╡рд┐

рдпрд╣ рдПрдХ рдИрдЖрд░рдкреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рджреЛ рдСрдкрд░реЗрдЯрд░ рдПрдХ рдЙрддреНрдкрд╛рдж рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗред

рдХрд╛рд░реНрдп

рдЗрд╕рд▓рд┐рдП, Node.js (рдПрдХреНрд╕рдкреНрд░реЗрд╕, рдХрдиреЗрдХреНрдЯ) рдкрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ (рдЕрд░реНрдерд╛рдд, рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреБрд░рдВрдд " рдСрдирд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ " рд╕реВрдЪреА рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛, рджреВрд╕рд░реЗ рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЧрдпрд╛) рдкреГрд╖реНрда - " рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рджреЗрдЦреЗрдВ " рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛, рдФрд░ рд╡рд╣ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдХреНрд░рдорд╢рдГ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛)ред
рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдареАрдХ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рд╢реБрд░реВ рдХрд░реЗрдВ - рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реЙрдХреЗрдЯ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВред I, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪреИрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

рдЧреНрд░рд╛рд╣рдХ

рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╛рд╣рд░реА рд╕реБрдВрджрд░рддрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдмрд╕ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдБрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдзрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдореМрдЬреВрдж рд╣реИред
рдпрд╣рд╛рдБ рд╣рдо рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ: рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рддрддреНрд╡ = "sockstat" (рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рдЖрдИрдбреА рдХреЗ рд╕рд╛рде = "рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛" (рдкреГрд╖реНрда рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП), рдЖрдИрдбреА = "рдСрдирд▓рд╛рдЗрди" (рдЙрди рд╕рднреА рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдЬреЛ рдСрдирд▓рд╛рдЗрди рд╣реИрдВ ), рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рдмрд╛рдд
<script type="text/javascript" src="/js/lib/jquery.js"></script> <script type="text/javascript" src="/socket.io/lib/socket.io.js"></script> 
ред
рдФрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдХрд┐рд╕реА рд╕рд░рдгреА рд╕реЗ рдмреБрд▓реЗрдЯ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдмрдирд╛рддрд╛ рд╣реИ:
 function lister(arr) { var s = ''; $.each(arr, function(key, value) { s += '<li><b>' + value.name + '</b> (login: ' + value.login + ', id: ' + value.user_id + ')</li>'; }); return s; } 


рдЕрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред рддрдВрддреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 $(document).ready(function() { var socket = io.connect("http://localhost:8080"); //      socket.on("connect", function () { // ,  : $("#sockstat").text("connected ok"); //        socket.emit("iamhere", { location: document.URL } ); //      socket.on("alsohere", function (alsohere) { //        ,  : $("#alsohere").html('  : <ul>' + lister(alsohere) + '</ul>'); }); socket.on("online", function (online) { //      - $("#online").html(' : <ul>' + lister(online) + '</ul>'); }); socket.on("disconnect", function () { //    -    (  ,   ) setTimeout(function () { $("#sockstat").text("connection lost!"); }, 500); }); }); }); 

рдкреГрд╖реНрда рдХреЛ рдЫреЛрдбрд╝рдирд╛ (рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреГрд╖реНрда рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╡реНрдпрд░реНрде рдХреЗ рд╡рд┐рд░рд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рд╡рд┐рд▓рдВрдм рдЖрдзреЗ рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдЫреЛрдЯреА рд╕реА рдЪрд╛рд▓, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ: "рдЬрдм рддрдХ рдХреЛрдИ рдмреНрд░реЗрдХ рди рд╣реЛ!" рдЬрдм рддрдХ рд╕рд░реНрд╡рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

рдпрд╣ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ? рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣реИред

рд╕рд░реНрд╡рд░: рд╕рддрд╣

рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреЛрдб рдореЗрдВ - index.js рдореЗрдВ, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛
 app.configure(); 
рд╣рдо рдЕрдкрдиреЗ рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рд╕реЙрдХреЗрдЯреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:
 require('./sockets'); 


рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ - рдЬреЛ рдХреБрдЫ рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рд╡реЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд▓реЙрдЧ рдЗрди рдереЗред
рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ ( sio.set ('рдкреНрд░рд╛рдзрд┐рдХрд░рдг' ...) рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ )ред

рдФрд░ рдЕрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реАред рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП - рд░реВрд╕реА рдореЗрдВред
2 рдкреНрд░рддреАрдХ рд╣реЛрдВрдЧреЗ:

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рднреА 2 рдЪрд░рдг рд╣реИрдВ - рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд╣рдорд╕реЗ (рд╕рд░реНрд╡рд░) рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдХрд░ рдЙрд╕рдХрд╛ рд╕реНрдерд╛рди рдмрддрд╛рддрд╛ рд╣реИ -
 socket.emit("iamhere", { location: document.URL } ); 
рдЧреНрд░рд╛рд╣рдХ, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
  1. рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреМрди рдЧрдпрд╛ рдФрд░ рдХрд╣рд╛рдВ рдЧрдпрд╛ (рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ)
  2. рд╕рднреА рдХреЛ рд╕рдХреНрд░рд┐рдп рдСрдирд▓рд╛рдЗрди рдЕрдкрдбреЗрдЯ рднреЗрдЬреЗрдВ
  3. рдПрдХ рд╣реА рдкреГрд╖реНрда рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рднреЗрдЬреЗрдВ - рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛


рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ -
  1. рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреМрди рдмрд╛рд╣рд░ рдЖрдпрд╛ рдФрд░ рдХрд╣рд╛рдВ рдЧрдпрд╛ (рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рд╕реЗ рд╣рдЯрд╛рдПрдВ)
  2. рд╕рднреА рдХреЛ рд╕рдХреНрд░рд┐рдп рдСрдирд▓рд╛рдЗрди рдЕрдкрдбреЗрдЯ рднреЗрдЬреЗрдВ
  3. рджрд░реНрд╢рдХреЛрдВ рдХреЛ рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рднреЗрдЬреЗрдВ рдЬрд╣рд╛рдВ рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдЕрднреА рдмрдЪрд╛ рд╣реИ, рдФрд░ рдХрд╣реАрдВ рднреА рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ? рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рд╕рд░реНрд╡рд░: рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛


рдЙрдкрд░реЛрдХреНрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЙрдХреЗрдЯ.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ "рд╕рдмрдорд┐рдЯ-рд▓рд╛рдПрдВ" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ - schem.js.
рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ:
 var auth = function () { "use strict"; // Private -   / var __users = [], ..., return { ... // Public -  / }; }(); module.exports = auth; 


рдореБрдЦреНрдп рд╕реЙрдХреЗрдЯ.рдЬреЗрдПрд╕ рдмреНрд▓реЙрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
 sio.sockets.on('connection', function (socket) { var hs = socket.handshake; auth.addActiveUser({ login: hs.session.user, name: hs.session.username, id: hs.session.user_id }); //  ,     -      socket.on('iamhere', function (msg) { //        -   auth.addPageActiveUser({ login: hs.session.user, path: msg.location, path_id: socket.id }); auth.getListActiveUser(function (online) { //     online ( 2) socket.emit('online', online); socket.broadcast.emit('online', online); }); auth.getListByPageActiveUser({ path: msg.location }, function (alsohere) { //     -    ,  //    ,   ,   alsohere var i, len; auth.getListByPageConnection({ path: msg.location, users: alsohere }, function (connections) { len = connections.length; for (i = 0; i < len; i++) { sio.sockets.sockets[connections[i].id].emit('alsohere', alsohere); } }); }); }); socket.on('disconnect', function () { //    : var s = auth.getPageByIdConnection(socket.id); // ,    , setTimeout(function () { auth.removeActiveUser({ login: hs.session.user }); //     , auth.getListActiveUser(function (online) { //    online, socket.broadcast.emit('online', online); }); auth.removePageActiveUser({ login: hs.session.user, path_id: socket.id }); //        auth.getListByPageActiveUser({ path: s }, function (alsohere) { //    ,      //    alsohere var i, len; auth.getListByPageConnection({ path: s, users: alsohere }, function (connections) { len = connections.length; for (i = 0; i < len; i++) { sio.sockets.sockets[connections[i].id].emit('alsohere', alsohere); } }); }); }, 1000); //      -    //   "" ,      }); }); 

рджреЗрдЦрд╛ред

рдЬрд╛рджреВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛

рдСрдХреНрдЯреЛрд░реЗрдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рдпрд╣ рд╕рднреА рдбреЗрдЯрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЙрдирдХреЗ рдХрдиреЗрдХреНрд╢рди рдФрд░ рдкреЗрдЬ, рд╕рддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдирд┐рдЬреА рдЪрд░ __active рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ - __activeUsers [рд▓реЙрдЧрд┐рди], рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

рддрджрдиреБрд╕рд╛рд░, рдореЙрдбреНрдпреВрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ f.-s рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, for..in рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ , рдЗрд╕реЗ ' рдкреБрд╢ рдХрд░реЗрдВ рдФрд░ рдмреНрдпрд╛рд╣ рдХрд░реЗрдВ ':


рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ.рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рдЦреЛрд▓рдирд╛, рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реЙрдХреЗрдЯ рд╣реИред рдпрд╛рдиреА 10 рдЦреБрд▓реЗ рдкрдиреНрдиреЛрдВ рд╡рд╛рд▓рд╛ 1 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рд╣реИрдВрдбрд╢реЗрдХ.рдЖрдИрдбреА рдФрд░ 10 рдЕрд▓рдЧ рд╕реЙрдХреЗрдЯ.рдЖрдИрдбреА рд╡рд╛рд▓рд╛ рд╣реИред
рдФрд░ рдлрд┐рд░ рдпрд╣ рдПрдХ рддрдХрдиреАрдХреА рдорд╛рдорд▓рд╛ рд╣реИ - рдЗрд╕ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдХреЗ, рд╣рдо рд╣рдореЗрд╢рд╛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдХреМрди рдФрд░ рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ / рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреВрд░реА "рдЬрдЯрд┐рд▓рддрд╛" рд╡рд╕реНрддреБ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рд╣реИ, рд╕рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдФрд░ рд╣рдо рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :)

рддреЛ рдЕрдм рдЖрдк рдлрд┐рд░ рд╕реЗ рдХреЛрдб рдХреЗ рдКрдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдЖрдк рдЙрд╕ рдЖрдИрдбреА рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдЦреИрд░, рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд╕реМрднрд╛рдЧреНрдп рд╣реИред

рдкреАрдПрд╕ рдУрдкреЗрд░рд╛ (v.11.62 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рдЬрдм рдПрдлрдПрдл рдФрд░ рдХреНрд░реЛрдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреГрд╖реНрда рдмрдВрдж рдХрд░рдирд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ / рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рджреНрд╡рд╛рд░рд╛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In143162/


All Articles