рд╢реБрдн рджреЛрдкрд╣рд░
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ 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");
рдкреГрд╖реНрда рдХреЛ рдЫреЛрдбрд╝рдирд╛ (рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрдиреЗрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреГрд╖реНрда рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рднрд╛рдЬрди рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╡реНрдпрд░реНрде рдХреЗ рд╡рд┐рд░рд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рд╡рд┐рд▓рдВрдм рдЖрдзреЗ рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдЫреЛрдЯреА рд╕реА рдЪрд╛рд▓, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ: "рдЬрдм рддрдХ рдХреЛрдИ рдмреНрд░реЗрдХ рди рд╣реЛ!" рдЬрдм рддрдХ рд╕рд░реНрд╡рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред
рдпрд╣ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ? рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣реИред
рд╕рд░реНрд╡рд░: рд╕рддрд╣
рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреЛрдб рдореЗрдВ - index.js рдореЗрдВ, рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛
app.configure();
рд╣рдо рдЕрдкрдиреЗ рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рд╕реЙрдХреЗрдЯреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:
require('./sockets');
рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ - рдЬреЛ рдХреБрдЫ рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рд╡реЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд▓реЙрдЧ рдЗрди рдереЗред
рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣
рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛
рд╣реИ (
sio.set ('рдкреНрд░рд╛рдзрд┐рдХрд░рдг' ...) рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ )ред
рдФрд░ рдЕрдм рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реАред рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП - рд░реВрд╕реА рдореЗрдВред
2 рдкреНрд░рддреАрдХ рд╣реЛрдВрдЧреЗ:
- рдСрдирд▓рд╛рдЗрди - рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдСрдирд▓рд╛рдЗрди
- рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ - рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рднреА 2 рдЪрд░рдг рд╣реИрдВ - рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд╣рдорд╕реЗ (рд╕рд░реНрд╡рд░) рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдХрд░ рдЙрд╕рдХрд╛ рд╕реНрдерд╛рди рдмрддрд╛рддрд╛ рд╣реИ -
socket.emit("iamhere", { location: document.URL } );
рдЧреНрд░рд╛рд╣рдХ, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
- рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреМрди рдЧрдпрд╛ рдФрд░ рдХрд╣рд╛рдВ рдЧрдпрд╛ (рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ)
- рд╕рднреА рдХреЛ рд╕рдХреНрд░рд┐рдп рдСрдирд▓рд╛рдЗрди рдЕрдкрдбреЗрдЯ рднреЗрдЬреЗрдВ
- рдПрдХ рд╣реА рдкреГрд╖реНрда рдХреЛ рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рднреЗрдЬреЗрдВ - рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛
рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ -
- рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреМрди рдмрд╛рд╣рд░ рдЖрдпрд╛ рдФрд░ рдХрд╣рд╛рдВ рдЧрдпрд╛ (рдЗрд╕реЗ рдСрдирд▓рд╛рдЗрди рд╕реЗ рд╣рдЯрд╛рдПрдВ)
- рд╕рднреА рдХреЛ рд╕рдХреНрд░рд┐рдп рдСрдирд▓рд╛рдЗрди рдЕрдкрдбреЗрдЯ рднреЗрдЬреЗрдВ
- рджрд░реНрд╢рдХреЛрдВ рдХреЛ рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рднреЗрдЬреЗрдВ рдЬрд╣рд╛рдВ рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдЕрднреА рдмрдЪрд╛ рд╣реИ, рдФрд░ рдХрд╣реАрдВ рднреА рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдХреНрдпрд╛ рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ? рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рд╕рд░реНрд╡рд░: рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛
рдЙрдкрд░реЛрдХреНрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЙрдХреЗрдЯ.рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ "рд╕рдмрдорд┐рдЯ-рд▓рд╛рдПрдВ" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ - schem.js.
рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ:
var auth = function () { "use strict";
рдореБрдЦреНрдп рд╕реЙрдХреЗрдЯ.рдЬреЗрдПрд╕ рдмреНрд▓реЙрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
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 });
рджреЗрдЦрд╛ред
рдЬрд╛рджреВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛
рдСрдХреНрдЯреЛрд░реЗрдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рдпрд╣ рд╕рднреА рдбреЗрдЯрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдЙрдирдХреЗ рдХрдиреЗрдХреНрд╢рди рдФрд░ рдкреЗрдЬ, рд╕рддреНрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдирд┐рдЬреА рдЪрд░ __active рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ - __activeUsers [рд▓реЙрдЧрд┐рди], рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдирд╛рдо - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо - рд▓реЙрдЧрд┐рди ("рд╡рд╛рд╕реНрдп" / "рд╡рд╛рд╕рд┐рд▓реА рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ") рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рд╣реЛрдиреЗ рдХреА рдирд╣реАрдВ
- user_id - рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА - рдкрд┐рдЫрд▓реЗ рдлрд╝реАрд▓реНрдб рдХреА рддрд░рд╣, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмрд╛рдж рдХреЗ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдХ "/ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ / user_id" рдХреЗ рд▓рд┐рдП
- рд╕реНрдерд╛рди - рджреЛ рдлрд╝реАрд▓реНрдб рд╕реЗ рдорд┐рд▓рдХрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╕рд░рдгреА: рдкрде - рдЦреБрд▓реЗ рдкреГрд╖реНрда рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде рдФрд░ рдЗрд╕ рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЖрдИрдбреА - рдЖрдИрдбреА
рддрджрдиреБрд╕рд╛рд░, рдореЙрдбреНрдпреВрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ f.-s рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ,
for..in рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ
рдХрд░рддреЗ рд╣реИрдВ , рдЗрд╕реЗ '
рдкреБрд╢ рдХрд░реЗрдВ рдФрд░
рдмреНрдпрд╛рд╣ рдХрд░реЗрдВ ':
- addActiveUser - __activeUser рдореЗрдВ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ
- addPageActiveUser - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЦреБрд▓рд╛ рдкреГрд╖реНрда рдЬреЛрдбрд╝рддрд╛ рд╣реИ ( __activeUser [sLogin] .locations.push ({path: sPath, id: sPath_id}); )
- getListActiveUser - рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ (рдХреЗ рд▓рд┐рдП (__activeUsers рдореЗрдВ) {list.ush (...
- getListByPageActiveUser - рджрд┐рдП рдЧрдП рдкрде рдкрд░ рд╕рдорд╛рди рдкреГрд╖реНрда рджреЗрдЦрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ
- getListByPageConnection - рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдкрддреЗ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реА рдкреГрд╖реНрда рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ
- getPageByIdConnection - рдХрдиреЗрдХреНрд╢рди рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдкреГрд╖реНрда рдХрд╛ рдкрддрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдкреГрд╖реНрда рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЧреНрд░рд╛рд╣рдХ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЖрдИрдбреА рджреЗрддрд╛ рд╣реИ, рдкрде рдирд╣реАрдВ)
- removeActiveUser - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЦреБрд▓реЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдореА рдХрд░рддрд╛ рд╣реИ
- removePageActiveUser - рдЦреБрд▓реЗ рдХреА рд╕реВрдЪреА рд╕реЗ рдПрдХ рдмрдВрдж рдкреГрд╖реНрда рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ
рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдХреЗ рд╕рд╛рде
рд╕реЙрдХреЗрдЯ.рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдирдпрд╛ рдкреГрд╖реНрда рдЦреЛрд▓рдирд╛, рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп
рд╕реЙрдХреЗрдЯ рд╣реИред рдпрд╛рдиреА 10 рдЦреБрд▓реЗ рдкрдиреНрдиреЛрдВ рд╡рд╛рд▓рд╛ 1 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 1 рд╣реИрдВрдбрд╢реЗрдХ.рдЖрдИрдбреА рдФрд░ 10 рдЕрд▓рдЧ рд╕реЙрдХреЗрдЯ.рдЖрдИрдбреА рд╡рд╛рд▓рд╛ рд╣реИред
рдФрд░ рдлрд┐рд░ рдпрд╣ рдПрдХ рддрдХрдиреАрдХреА рдорд╛рдорд▓рд╛ рд╣реИ - рдЗрд╕ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдХреЗ, рд╣рдо рд╣рдореЗрд╢рд╛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдХреМрди рдФрд░ рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ / рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреВрд░реА "рдЬрдЯрд┐рд▓рддрд╛" рд╡рд╕реНрддреБ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рд╣реИ, рд╕рд╣реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИред рдФрд░ рд╣рдо рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ :)
рддреЛ рдЕрдм рдЖрдк рдлрд┐рд░ рд╕реЗ рдХреЛрдб рдХреЗ рдКрдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд╕рдордЭреЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдЖрдк рдЙрд╕ рдЖрдИрдбреА рдХреЛ рдирд╣реАрдВ рдорд┐рд▓рд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдЦреИрд░, рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд╕реМрднрд╛рдЧреНрдп рд╣реИред
рдкреАрдПрд╕ рдУрдкреЗрд░рд╛ (v.11.62 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рдЬрдм рдПрдлрдПрдл рдФрд░ рдХреНрд░реЛрдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреГрд╖реНрда рдмрдВрдж рдХрд░рдирд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ / рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ рджреНрд╡рд╛рд░рд╛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред