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

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдпрд╣ рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдирд┐рд░рдВрддрд░ рдХрдиреЗрдХреНрд╢рди рд░рдЦрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред Websocket рдпрд╛ SockJS рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣, рдпрджрд┐ Websocket рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ Eventource, XHR- рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ, рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдорддрджрд╛рди рдФрд░ рдЕрдиреНрдп HTTP- рдЖрдзрд╛рд░рд┐рдд рдкрд░рд┐рд╡рд╣рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЧреНрд░рд╛рд╣рдХ рдЙрди рдЪреИрдирд▓реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╕реЗрдВрдЯреНрд░реАрдлрд╝реНрдпреВрдЬ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреИрдХрдПрдВрдб рдЙрдарддреЗ рд╣реА рдирдП рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЪреИрдирд▓ рдореЗрдВ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ PUB / SUB рд╕рд░реНрд╡рд░ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ Mail.Ru рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ (рдЗрдВрдЯреНрд░рд╛рдиреЗрдЯ, рдЯреЗрдХреНрдиреЛрдкрд╛рд░реНрдХ / рдЯреЗрдХреНрдиреЛрд╕реНрдлреАрдпрд░ рдЯреНрд░реЗрдирд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдореНрд╕, рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрд╢рди рд╕реЗрдВрдЯрд░, рдЖрджрд┐) рд╣реИрдВ, рд╕реЗрдВрдЯреНрд░реАрдлреБрдЧреЛ рдХреА рдорджрдж рд╕реЗ, рдПрдХ рд╕реБрдВрджрд░ рдбреИрд╢рдмреЛрд░реНрдб, рджрдлреНрддрд░ рдореЙрд╕реНрдХреЛ рдореЗрдВ рд░рд┐рд╕реЗрдкреНрд╢рди рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ 350 рд╣рдЬрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╕рд╛рде рд╕реНрдкреЙрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдЕрдкрдХреЗрдВрджреНрд░рд┐рддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╕рд░реНрд╡рд░ рдкрд░ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдХреБрдЫ рд▓рд┐рдВрдХ рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЖрд╡реЗрджрди рдЬреЛ рдкрд╣рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирддреЗ рд╣реИрдВ:
рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓ рджрд┐рд╕рдВрдмрд░ рдореЗрдВ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЖрдЬ рднреА рдЬрд╛рд░реА рд╣реИред рджреЗрдЦрддреЗ рд╣реИрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рди рдХреЗрд╡рд▓ рдХрд┐рд╕реА рддрд░рд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдмрд▓реНрдХрд┐ рд╕реЗрдВрдЯреНрд░реАрдлреБрдЧреЛ рд╡реА 2 рдХреЗ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рдФрд░ рд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЕрдм рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдФрд░ рдкрд┐рдЫрдбрд╝реЗ рдЕрд╕рдВрдЧрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИред
рдЧреЛ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкреБрд╕реНрддрдХрд╛рд▓рдп
рдЧреЛ рд╕рдореБрджрд╛рдп рдореЗрдВ, рд╕рдордп-рд╕рдордп рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдХреНрдпрд╛ рдЧреЛ рдкрд░ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИ? рдХрднреА-рдХрднреА рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕реЗрдВрдЯреНрд░реАрдлреБрдЧреЛ рдХреА рдУрд░ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдПрдХ рд╕реНрд╡-рд╣реЛрд╕реНрдЯреЗрдб рд╕рд░реНрд╡рд░ рд╣реИ, рди рдХрд┐ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп - рддреБрд▓рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдХрдИ рдмрд╛рд░ рдпрд╣ рднреА рдкреВрдЫрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрдВрдЯреНрд░рд┐рдлреБрдЧреЛ рдХреЛрдб рдХреЛ рдЧреЛ рдореЗрдВ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЬрд╡рд╛рдм рдерд╛: рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд░ рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдПрдкреАрдЖрдИ рдХреА рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдерд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдЬреЛрдЦрд┐рдо рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлреЛрд░реНрдХрд┐рдВрдЧ рднреА рдРрд╕рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рд▓рд┐рдП, рдПрдХ рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдХрд╛рд░реНрдп рдЬреЛ рдореИрдВ рд╕рд░реНрд╡рд░ рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд╡рд╣ рдерд╛ рдЧреЛ рдкрд░ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЛрд░ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЙрддреНрдкрд╛рджрди рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рдореЗрдВ рдХрд┐рддрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рд╕реНрдХреЗрд▓реЗрдмрд▓ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдиреАрдЪреЗ рд░реЗрдЦрд╛рдВрдХрд┐рдд рднреА рдХрд░реВрдВрдЧрд╛ред
рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдПрдХ рдФрд░ рдкреНрд▓рд╕ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣реИрдВ рдЬреЛ рдХрдордЬреЛрд░ рд╕рдВрдЧрд╛рдорд┐рддрд┐ рд╕рдорд░реНрдерди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Django / рдлреНрд▓рд╛рд╕реНрдХ / рд▓рд╛рд░рд╡реЗрд▓ / ...) рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛рдУрдВ / рдЪреМрдЦрдЯреЛрдВ рдореЗрдВ рдПрдХ рдмреИрдХреЗрдВрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдПрдХ рдЕрд╕рдВрдмрджреНрдз рдпрд╛ рдЕрдХреНрд╖рдо рддрд░реАрдХреЗ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓рдЧрд╛рддрд╛рд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рддрджрдиреБрд╕рд╛рд░, рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреЛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ (рднрд╛рд╖рд╛ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдХреЙрд░реНрди)ред рдЗрд╕рд▓рд┐рдП, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЧреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╕рдореБрджрд╛рдп рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдВрдЯреНрд░реАрдлреБрдЧреЛ рд╕рд░реНрд╡рд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХреЗрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЕрдкрдХреЗрдВрджреНрд░рд┐рддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдпрд╣ рдЕрднреА рднреА WIP рд╣реИ, рд▓реЗрдХрд┐рди рдЬреАрдердм рдкрд░ рд╡рд░реНрдгрди рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИрдВред рдЪреВрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛рдлреА рд╕рдореГрджреНрдз рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдкрд┐рдЫрдбрд╝реЗ рдЕрдиреБрдХреВрд▓рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЧреЛ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрдИ рд╕рдлрд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЕрднреА рддрдХ рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВред рд╕рд╛рде рд╣реА рдЕрд╕рдлрд▓ :)ред рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВред
рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд╛рдордХрд░рдг рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░, рдореИрдВ рд╣рдореЗрд╢рд╛ рднреНрд░рдо рд╕реЗ рдирд┐рдкрдЯреВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ (рдЬреИрд╕реЗ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ-рдЬреЗрдПрд╕, рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ-рдЧреЛ) рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХрд╛рдлреА рдордЬрдмреВрддреА рд╕реЗ рдШреБрд╕рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдореИрдВ рдЗрди рд╕рдВрдШреЛрдВ рдХреЛ рдЦреЛрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред рдФрд░ рдлрд┐рд░ рднреА, рдереЛрдбрд╝реА рдФрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛:
- рдЕрдкрдХреЗрдВрджреНрд░рд┐рддреНрд░ - рдЧреЛ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп,
- рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдПрдХ рдЯрд░реНрдирдХреА рд╕рдорд╛рдзрд╛рди рд╣реИ, рдПрдХ рдЕрд▓рдЧ рд╕реЗрд╡рд╛, рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред
рдЗрд╕рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдХрд╛рд░рдг, Centrifugo (рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рд╕реЗрд╡рд╛ рдЬреЛ рдЖрдкрдХреЗ рдмреИрдХрдПрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреА рд╣реИ) рдорд╛рдирддреА рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдкрд░рд┐рд╡рд╣рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпрд╛ рдорддрд▓рдм? рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪреИрдЯ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрджреЗрд╢ рдкрд╣рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреИрдХрдПрдВрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ AJAX) рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмреИрдХреЗрдВрдб рдкрдХреНрд╖ рдкрд░ рдорд╛рдиреНрдп, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рдПрдкреАрдЖрдИ рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рджреНрд╡рд┐рджрд┐рд╢ рд╡рд┐рдирд┐рдордп рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЖрд░рдкреАрд╕реА рдХреЙрд▓ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ: рд╣рдо рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд░реНрд╡рд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдПрдХ рд╕рдВрджреЗрд╢ рдбреНрд░рд╛рдЗрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдВрдЯрд░ рджрдмрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рд╕рдВрджреЗрд╢ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЪреИрдирд▓ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЪреИрдЯ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдгред рдпрд╣ рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЧрд┐рд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред
рдЖрдк рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
git clone https:
рдФрд░ рдлрд┐рд░ http: // localhost: 8000 рдкрд░ рдЬрд╛рдПрдВ , рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдЦреЛрд▓реЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╡реЗрджрди рдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ On().Connect()
рд╣реЛрддрд╛ рд╣реИ On().Connect()
рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди:
node.On().Connect(func(ctx context.Context, client *centrifuge.Client, e centrifuge.ConnectEvent) centrifuge.ConnectReply { client.On().Disconnect(func(e centrifuge.DisconnectEvent) centrifuge.DisconnectReply { log.Printf("client disconnected") return centrifuge.DisconnectReply{} }) log.Printf("client connected via %s", client.Transport().Name()) return centrifuge.ConnectReply{} })
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореБрдЭреЗ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рдорд╛рди, рдХреЗрд╡рд▓ рдХрдордЬреЛрд░ рдЯрд╛рдЗрдк, рдЧреЛ рдкрд░ рд╕реЙрдХреЗрдЯ-рдЖрдИрдУ рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЛ рдЕрдзрд┐рдХ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рддреЛ рдореБрдЭреЗ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рдпрд╣ рдиреЛрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреЛрд░рд┐рд▓реНрд▓рд╛ рд╡реЗрдмрд╕реИрдЯред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА, рдЖрдкрдХреЛ рдЧреЛрд░рд┐рд▓реНрд▓рд╛ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛрдб рдХрд╛ рдПрдХ рд╕рднреНрдп рдЯреБрдХрдбрд╝рд╛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░:
- рдЖрдкрдХреЛ рдХрдИ рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛,
- рдпрд╛ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЪреИрдирд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ - рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЙрдирд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ,
- рдпрд╛ рдЖрдкрдХреЛ рдЙрд╕ рд╕рдордп рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рд╡реЗрдмрд╕реИрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдкреНрд░реЙрдХреНрд╕реА рдХрдиреЗрдХреНрд╢рди рдХрд╛рдЯрддрд╛ рд╣реИ),
- рдпрд╛ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рдХрдо рд╡рд┐рд░рд╛рдо рдХреЗ рджреМрд░рд╛рди рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдпрд╛рдж рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
- рдпрд╛ рдЖрдкрдХреЛ рдЪреИрдирд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ,
- рдпрд╛ рдЖрдкрдХреЛ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рд╕реНрдерд╛рдпреА рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИрдВ,
- рдпрд╛ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреМрди рдЪреИрдирд▓ рдкрд░ рд╣реИ рдпрд╛ рдРрд╕реА рдШрдЯрдирд╛рдПрдБ рдЬреЛ рдХрд┐рд╕реА рдиреЗ рдЪреИрдирд▓ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ / рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд▓реА рд╣реИрдВ
- рдпрд╛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдЕрдкрдХреЗрдВрджреНрд░рд┐рддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдЙрди рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдереЗред рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдмрд┐рдВрджреБрдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдЧрд┐рдереВрдм рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдХреА рдордЬрдмреВрдд рд╡рд┐рд░рд╛рд╕рдд рдПрдХ рдорд╛рдЗрдирд╕ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗ рд╕рднреА рд╕рд░реНрд╡рд░ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рдЕрдкрдирд╛рдпрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рдореВрд▓ рд╣реИрдВ рдФрд░, рд╢рд╛рдпрдж, рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЕрд╕реНрдкрд╖реНрдЯ рдпрд╛ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдиреЗ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рд╣реИрдВ рдЬреЛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд▓рд┐рдЦреЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдкрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдлреНрд░реЗрдо рдореЗрдВ рдХрдИ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЯреЛрдЧреБрдл рд╕рдВрджреЗрд╢ рдФрд░ рдЕрдиреНрдп рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛрдЧреЛрдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЙрдм рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ ( рдФрд░ рди рд╕рд┐рд░реНрдл рдореЗрд░реЗ ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗ, рдЗрд╕рд▓рд┐рдП рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореИрдВ JSON рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореМрдЬреВрджрд╛ рдПрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЕрдм рдкреВрд░реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдкреНрд░реЛрдЯреЛрдмреЙрдл рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрдгрдпреЛрдВ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрд┐рдд рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреЗрдПрд╕рдПрди - рдХреЙрдореНрдкреИрдХреНрдЯрдиреЗрд╕, рдХреНрд░рдордмрджреНрдзрддрд╛ рдЧрддрд┐, рд╕рдЦреНрдд рд╕реНрдХреАрдо рдкрд░ рдкреНрд░реЛрдЯреЛрдмреЙрдл рдХреЗ рдХреНрдпрд╛ рдлрд╛рдпрджреЗ рд╣реИрдВред рдЕрд╡реИрдзрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрд╛рдореА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, JSON рдХреЗ рдмрдЬрд╛рдп Protobuf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп Centrifugo рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдЯреНрд░реИрдлрд╝рд┐рдХ ~ 2 рдЧреБрдирд╛ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдШрдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ CPU рдЦрдкрдд JSON рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рд╣реА ~ 2 рдЧреБрдирд╛ рдХрдо рд╣реЛ рдЧрдпрд╛ред рдпреЗ рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдмрд╛рдд рдХрд░рддреА рд╣реИ, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓реЛрдб рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред
рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдбреЗрдмрд┐рдпрди 9.4 рдФрд░ 32 Intel┬о Xeon┬о рдкреНрд▓реЗрдЯрд┐рдирдо 8168 рд╕реАрдкреАрдпреВ @ 2.70GHz vCPU рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдорд╢реАрди рд▓реЙрдиреНрдЪ рдХреА, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ JB рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдФрд░ Protobuf рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреА рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред 1 рдЪреИрдирд▓ рдХреЗ 1000 рдЧреНрд░рд╛рд╣рдХ рдереЗред рдЗрд╕ рдЪреИрдирд▓ рдореЗрдВ, рд╕рдВрджреЗрд╢ 4 рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЧрдП рдФрд░ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЧрдПред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХрд╛ рдЖрдХрд╛рд░ 128 рдмрд╛рдЗрдЯреНрд╕ рдерд╛ред
JSON рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо:
$ go run main.go -s ws:
Protobuf рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо:
$ go run main.go -s ws:
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд╛ рдереНрд░реВрдкреБрдЯ рдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 2 рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдирд╛рдЯреНрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реИ ред
рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдЬреЛрдВрд╕рди рдХреНрд░рдорд╛рдВрдХрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЙрд╕реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдкрдВрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдЬреИрд╕рд╛ рдХрд┐ рдЧреЛрдЧреЛрдкреНрд░реЛрдЯреЛрдмреЙрдлрд╝ - рдмрдлрд░ рдкреВрд▓ рдФрд░ рдХреЛрдб рдкреАрдврд╝реА рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ - рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЗрдПрд╕рдПрди рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдорд╛рдирдХ рдорд╛рдирдХ рд╕реЗ рдПрдХ рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдореЗрдВ, JSON рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдмрдлрд░ рдкреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред рдХреБрдЫ рдРрд╕рд╛ рд╣реА рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдЬреЛрд░ рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдкреНрд░реЛрдЯреЙрдл рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕рдХреЗ рд▓рд┐рдП protobuf.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░реЛрдЯреЛрдмреЛрдлрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛рдлреА рднрд╛рд░реА рд╣реИ, рдФрд░ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЫреЛрдЯреА рд╣реЛрдЧреА, рд╡реЗрдмрдкреИрдХ рдФрд░ рдЗрд╕рдХреЗ рдкреЗрдбрд╝ рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рд╡рд╛рд▓реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ - рдПрдХ JSON рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде, рдФрд░ рджреВрд╕рд░рд╛ JSON рдФрд░ рдкреНрд░реЛрдЯреЛрдмреБрдлрд╝ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рдеред рдЕрдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдЗрддрдиреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рддрд╛ рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
JSON рд╡реЗрдм рдЯреЛрдХрди (JWT)
Centrifugo рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдмреИрдХрдПрдВрдб рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рддреНрд░ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ, рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, SHA-256 HMAC рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХреЗрд╡рд▓ рдмреИрдХрдПрдВрдб рдФрд░ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рдХреЗ рд▓рд┐рдП рдЬреНрдЮрд╛рдд рдПрдХ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕реА рдХреА рд╣реИред
рд╢рд╛рдпрдж рдХрдиреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рд╣реА рд╣рд╕реНрддрд╛рдВрддрд░рдг рдФрд░ рдПрдХ рдЯреЛрдХрди рдХреА рдкреАрдврд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдореБрдЦреНрдп рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдереАред
рдЬрдм рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, JWT рдорд╛рдирдХ рдЕрднреА рддрдХ рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд╣реАрдВ рдерд╛ред рдЕрдм, рдХреБрдЫ рд╕рд╛рд▓ рдмрд╛рдж, JWT рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ ред рдЬреЗрдбрдмреНрд▓реНрдпреВрдЯреА рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╣реИ рдЬреЛ рдЕрдкрдХреЗрдВрджреНрд░рд┐рддреНрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ: рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ред HMAC рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдиреЗ JWT рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рджрд┐рдпрд╛ред рдЗрд╕рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЯреЛрдХрди рдХреА рд╕рд╣реА рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджреВрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдореЗрдВ, рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЛрдХрди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
import jwt import time token = jwt.encode({"user": "42", "exp": int(time.time()) + 10*60}, "secret").decode() print(token)
рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореВрд▓ рдЧреЛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдЕрдВрджрд░ред рдЙрджрд╛рд╣рд░рдг рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИрдВред
GRPC
рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ GRPC рджреНрд╡рд┐рджрд┐рд╢ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдФрд░ HTTP- рдЖрдзрд╛рд░рд┐рдд SockJS рдХрдордмреИрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛)ред рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ? рдЙрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдРрд╕рд╛ рдПрдХ рднреА рдкрд░рд┐рджреГрд╢реНрдп рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬрд╣рд╛рдБ рджреНрд╡рд┐рджрд┐рд╢реАрдп GRPC рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛: рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрдкрдиреНрди рдЯреНрд░реИрдлрд╝рд┐рдХ, рд╕реАрдкреАрдпреВ рдХреА рдЦрдкрдд рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди, рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди рдореЗрдореЛрд░реА рдЦрдкрддред
рдЬреАрдЖрд░рдкреАрд╕реА рд╕рднреА рддрд░рд╣ рд╕реЗ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рд╕реЗ рд╣рд╛рд░ рдЧрдпрд╛:
- рдЬреАрдЖрд░рдкреАрд╕реА рд╕рдорд╛рди рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ 20% рдЕрдзрд┐рдХ рдпрд╛рддрд╛рдпрд╛рдд рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ,
- рдЬреАрдЖрд░рдкреАрд╕реА 2-3 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕реАрдкреАрдпреВ рдЦрдкрдд рдХрд░рддрд╛ рд╣реИ (рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ - рд╕рднреА рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЪреИрдирд▓реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рджреА рдЬрд╛рддреА рд╣реИ рдпрд╛ рд╕рднреА рдХреЛ рдПрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,)
- рдЬреАрдЖрд░рдкреАрд╕реА рдкреНрд░рддрд┐ рдХрдиреЗрдХреНрд╢рди 4 рдЧреБрдирд╛ рд░реИрдо рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10k рдХрдиреЗрдХреНрд╢рди рдкрд░, Websocket рд╕рд░реНрд╡рд░ рдиреЗ 500Mb рдореЗрдореЛрд░реА рдФрд░ GRPC - 2Gb рдЦрд╛рдпрд╛ред
рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА ... рдЕрдкреЗрдХреНрд╖рд┐рдд рдереЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬреАрдЖрд░рдкреАрд╕реА рдореЗрдВ, рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рдордЭрджрд╛рд░реА рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ - рдФрд░ рдХреЛрдб рдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡реЗрдХ рдХреЗ рд╕рд╛рде рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЬрдм рддрдХ, рд╢рд╛рдпрдж, рдмреЗрд╣рддрд░ рд╕рдордпред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреАрдЖрд░рдкреАрд╕реА рдЙрд╕ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЖрд░рдкреАрд╕реА рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, HTTP рдПрдкреАрдЖрдИ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рдореЗрдВ рдЕрдм рдЬреАрдЖрд░рдкреАрд╕реА-рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерди рднреА рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреИрдирд▓ рдФрд░ рдЕрдиреНрдп рдЙрдкрд▓рдмреНрдз рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдЗрдпрд╛рдБ
рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди, рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ - рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдЗрд╕рд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдлреА рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЛ NodeJS рдФрд░ рд░рд┐рдПрдХреНрдЯ-рдиреЗрдЯрд┐рд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЧреЛ рдкрд░ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдФрд░ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЧреЛрдореЛрдмрд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд╛рдЗрдВрдбрд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рд╕рдВрдкреВрд░реНрдг рдЦреБрд╢реА рдХреЗ рд▓рд┐рдП, рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИрдВред рд╕реЗрдВрдЯреНрд░реАрдлреБрдЧреЛ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдореБрджрд╛рдп рдХреЗ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЦрд░реАрджрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдЕрдм рд╣реЛрдЧрд╛ред
рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореЛрдЬрд╝рд┐рд▓рд╛ рд╕реЗ рдПрдордУрдПрд╕рдПрд╕ рдЕрдиреБрджрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рднреЗрдЬрдХрд░ рдЕрдкрдиреА рдХрд┐рд╕реНрдордд рдЖрдЬрд╝рдорд╛рдИ , рдЬреЛ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдордирд╛ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЬреАрдердм рдкрд░ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╕рдореБрджрд╛рдп рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрджрдо рдЙрдард╛ рд░рд╣рд╛ рд╣реВрдВред

рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВрдиреЗ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХреА рд╣реИ рдЬреЛ рд╕реЗрдВрдЯреНрд░реАрдлреБрдЧреЛ рд╡реА 2 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ - рдереЛрдбрд╝рд╛ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬреАрдереВрдм рдкрд░ рдЬрд╛рд░реА рд╣реИ ред рд╕рд░реНрд╡рд░ рд░рд┐рд▓реАрдЬрд╝ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд▓реНрдж рд╣реА рд╣реЛрдЧрд╛ред рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рд╣рд┐рдд рдЕрднреА рднреА рдЕрдзреВрд░реЗ рдХреНрд╖рдг рд╣реИрдВред рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдк рдПрдХ Centrifugo рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ, рддреЛ рдЕрдм рд╕рд░реНрд╡рд░ рдХреЗ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рд╕рдордп рд╣реИред рдРрд╕рд╛ рд╕рдордп рдЬрдм рдХрд┐рд╕реА рдЪреАрдЬ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдбрд░рд╛рд╡рдирд╛ рди рд╣реЛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдмреЗрд╣рддрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП: рд╡рд┐рдХрд╛рд╕ рд╕реА 2 рд╢рд╛рдЦрд╛ рдореЗрдВ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ ред
рдпрд╣ рдЬрдЬ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЧреЛ рд╡реА 2 рдХреЛ рдЕрдВрдбрд░рдЧреНрд░рд╛рдЙрдВрдб рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрдВрдЯреНрд░реАрдлреНрдпреВрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХрд┐рддрдиреА рдбрд┐рдорд╛рдВрдб рд╣реЛрдЧреАред рдлрд┐рд▓рд╣рд╛рд▓, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдЕрдм рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рд╣реИ "рдХреНрдпрд╛ рдореИрдВ рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рдирд┐рдЬреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛?" рдореЗрд░рд╛ рдЬрд╡рд╛рдм рд╣реИ рд╣рд╛рдВред рдХрд╛рдо рдкрд░? рд╣рд╛рдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗред
рдкреАрдПрд╕ рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрд╛рдо рдФрд░ рд╕рд▓рд╛рд╣ рдХреЗ рд╕рд╛рде рдорджрдж рдХреА - рджрд┐рдорд┐рддреНрд░реА рдХреЛрд░реЛрд▓рдХреЛрд╡, рдЖрд░реНрдЯреЗрдо рд░рдпрд╛рдмрд┐рдВрдХреЛрд╡, рдУрд▓реЗрдЧ рдХреБрдЬрд╝рдорд┐рдиред рдпрд╣ рддреБрдореНрд╣рд╛рд░реЗ рдмрд┐рдирд╛ рддрдВрдЧ рд╣реЛрдЧрд╛ред