
рдкрд░рд┐рдЪрдп
рдХрдИ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдРрд╕реЗ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдореВрд▓реНрдп рдХреЛ рдЕрдХреНрд╕рд░ рдмрджрд▓рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдХрд╛рдЙрдВрдЯрд░, рд╕рдВрдХреЗрддрдХ, рд╕реВрдЪрдирд╛рдПрдВ рдФрд░ рд╕рдорд╛рди рддрддреНрд╡ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдкреГрд╖реНрда рддрд╛рдЬрд╝рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдорд╛рди рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдХреНрдпрд╛ рдореИрдВ рдпрд╣ рд╕рдм рдбреЗрдЯрд╛ рд╕реНрд╡рддрдГ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЬрд╡рд╛рдм рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдпрджрд┐ рддрддреНрд╡реЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИред
рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЧрдВрднреАрд░ рднрд╛рд░ рдХреЗ рдЕрдзреАрди рдирд╣реАрдВ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдкреАрдХ рдЖрд╡рд░реНрд╕ рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдХрдИ рд╣рдЬрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдирд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИрдВ, рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдкреГрд╖реНрда рдкрд░ рдЕрджреНрдпрддрдиреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рд╕рд░реНрд╡рд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрджреНрдпрддрди рдбреЗрдЯрд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдкреГрд╖реНрда рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдЬреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧреАред
рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, AJAX рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдзрд╛рди, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░реЗрдЧрд╛, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд╛рд░ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ред рдмреЗрд╢рдХ, рд╣рдо рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрд╢ рднрд░ рдореЗрдВ рд╕рд░реНрд╡рд░реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗред рдпрд╣ рд╣рдорд╛рд░рд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдЦреБрдж рдирдП рдбреЗрдЯрд╛ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗред рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рд╕рд░реНрд╡рд░ рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реНрдХ рд╡реЗрдм рдкрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Websockets рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ .net рдиреЗ рд╡реЗрдмрд╕реНрдХреИрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реЗрдмрд╕реНрдХреЗрдЯ рдХреЗ рд░реЛрдЬрд╝рдорд░реНрд░рд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЬрд▓реНрджрдмрд╛рдЬреА рд╣реЛрдЧреАред рдХреБрдЫ рдФрд░ рдЪрд╛рд╣рд┐рдПред рд▓реЙрдиреНрдЧрдкреЛрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдмрдВрдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдШрдЯрдирд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдирд╣реАрдВ, рд╣рдо рдЖрдЧреЗ рднреА рдЦреЛрдЬ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рд╣рдордиреЗ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХреЛ рджреЗрдЦрд╛ред рд╣рдо рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдПрдХ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдФрд░ рд▓реЙрдиреНрдЧрдкреЛрд▓рд┐рдВрдЧ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдкрд░рд┐рд╡рд╣рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЦреБрдж рдХреЛ рдЪреБрдиреЗрдВрдЧреЗред рдпрджрд┐ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рддрдм рддрдХ рдиреАрдЪреЗ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкрд░рд┐рд╡рд╣рди рди рдорд┐рд▓ рдЬрд╛рдПред
рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ: рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛, рдкрдВрдЬреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдЦрдВрдб рд╣реИред рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рднреА рд╣реИред рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (user1) рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (user2) рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, user2 рдХреЗ рдЦреБрд▓реЗ рдкреГрд╖реНрда рдкрд░, рдирдП рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рддреБрд░рдВрдд рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдкреЗрдЬ рдкрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдиреБрдЧреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛:
Install-Package Microsoft.AspNet.SignalR -pre
рдХрд╛рдо рдХрд░ рд░рд╣реЗ
рд╕рд┐рдЧреНрдирд▓рдЖрд░ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рд╕рд░реНрд╡рд░ рдкрд░, рдмрд╣реБрдд рд╕рд╛рд░ рд╣рдм рд╣реИред рдпрд╣ рд╡рд╣ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
[HubName("msg")] public class Im : Hub { public Task Send(dynamic message) { return Clients.All.SendMessage(message); } public void Register(long userId) { Groups.Add(Context.ConnectionId, userId.ToString(CultureInfo.InvariantCulture)); } public Task ToGroup(dynamic id, string message) { return Clients.Group(id.ToString()).SendMessage(message); } } }
рд╣рдордиреЗ рдХрдИ рддрд░реАрдХреЗ рдмрдирд╛рдП рд╣реИрдВред
- рднреЗрдЬреЗрдВ - рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред
- рд░рдЬрд┐рд╕реНрдЯрд░ - рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХреЛ рдПрдХ рдпрд╛ рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
- ToGroup - рдПрдХ рдпрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ред "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛," рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ "рдПрдХ рд╕рдореВрд╣ рдЬреЛ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░рддрд╛ рд╣реИред"
рдЪрд▓реЛ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИ:
<script src="http://code.jquery.com/jquery-1.8.2.min.js" type="text/javascript"></script> <script src="Scripts/jquery.signalR-1.0.0-rc1.min.js" type="text/javascript"></script> <script src="/signalr/hubs" type="text/javascript"></script> <script type="text/javascript"> $(function () {
рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХред рд╕рд┐рдЧреНрдирд▓рдЖрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╣рдм рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдЖрдк рдЗрд╕реЗ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛
/ рд╕рд┐рдЧреНрдирд▓ / рд╣рдм рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдХреЛрдб рдореЗрдВ, рд╣рдм рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп (рдЗрд╕рдХреЗ рд▓рд┐рдП
рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд╣рдо
рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдзрд┐ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
UserId рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╣ рдЕрдм рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдордиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рджреМрд░рд╛рди, рд╣рдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдзрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ userId рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛
UserId рдХреЗ рд╕рд╛рде рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХреЗ рдЬрдм рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдм рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдЕрдкрдиреЗ рдХрдиреЗрдХреНрд╢рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╕рд┐рдЧреНрдирд▓рдЖрд░рдЖрд░ рдХреЛ рдЙрд╕рдХреЗ рдХрдиреЗрдХреНрд╢рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рд╕рд┐рдЧреНрдирд▓рдЖрд░ рд╕рд░реНрд╡рд░ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдкреГрд╖реНрда рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдкрд╣реБрдВрдЪ (рдкреГрд╖реНрда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛) рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рдПрдХ рдирдП рдЯреИрдм рдореЗрдВ рдЦреЛрд▓рдиреЗ рд╕рд╣рд┐рдд, рдпрд╣ рдПрдХ рдирдпрд╛ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХрдиреЗрдХреНрд╢рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐
UserId рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЦреБрд▓реЗ рдЯреИрдм рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдореЗрдВ
UserId рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА ConnectionId рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рд╣рдм рдХреНрд▓рд╛рд╕ рдореЗрдВ, рд░рдЬрд┐рд╕реНрдЯрд░ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдордиреЗ
UserId рдирд╛рдордХ рдПрдХ рд╕рдореВрд╣ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдирдП ConnectionId рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рдЕрдм рд╣рдо
UserId рдХреЛ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рднреА ConnectionId рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рдЬреА рдЕрднреНрдпрд╛рд╕
рдЖрдЗрдП рдПрдХ рдФрд░ рд╕реНрдерд┐рддрд┐ рджреЗрдЦреЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
user2 рдиреЗ
user1 рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрд╛ рдФрд░ "рднреЗрдЬреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ред рд╣рдорд╛рд░реЗ рдЕрдЧрд▓реЗ рдХрджрдо рдХреНрдпрд╛ рд╣реИрдВ? рдЖрдк рд╣рдм рдХреНрд▓рд╛рд╕ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрджреЗрд╢, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдирд╛, рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рдирд╛, рдореЙрдбрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рднреЗрдЬрдирд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ HttpHandler рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВрдЧреЗред рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рд╡рд╣ рд╕рдм рдХреБрдЫ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рд╣рдо рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ рдпрд╛ рдЗрд╕реЗ рдореЙрдбрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗрдВрдЧреЗ) рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдо рдЗрд╕реЗ рд╣рдм рдкрд░ рднреЗрдЬ рджреЗрдВрдЧреЗ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
user1 рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдПрдХ рдХрдард┐рдирд╛рдИ рд╣реИ - рд╣реЗрдЯрдлреИрдВрдбрд▓рд░ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЖрдВрдд рдореЗрдВ рд╣реИред рд╣рдо рдЗрд╕ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдБрдЧреЗред рд╣рдм рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ:
static HubConnection connection; static IHubProxy hub; static string Url = "http://im.myProjectSite.com";
рдЗрдирд╡реЛрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрдЦреЗрдВред рд╣рдо рдЕрдкрдиреЗ рд╣рдм рдХреЗ
ToGroup рддрд░реАрдХреЗ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╕рднреА рдХрдиреЗрдХреНрд╢рди (
connectioId ) рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ред рдпрд╣рд╛рдБ рд╣рдордиреЗ
рд╕реНрдереИрддрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рд╣рдм рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдХрд╣рддреЗ рд╣реИрдВ,
Global.asax рдореЗрдВ рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ
рдЗрдирд╡реЛрдХ рд╣реЛрддрд╛ рд╣реИред
.Net рдореЗрдВ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдХреЛрдб рдХреА рдХреБрдЫ рдФрд░ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА:
RouteTable.Routes.MapHubs("~/signalr"); RouteTable.Routes.MapHubs(); GlobalHost.HubPipeline.EnableAutoRejoiningGroups();
рд╕рд┐рдЧреНрдирд▓рдЖрд░ рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреБрдЫ рд╣рдж рддрдХ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реЗрдВрдЧреЗ рдХрд┐
EnableAutoRejoiningGroups рд╣рдореЗрдВ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рди рдЦреЛрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ
рдЬрдм рд╣рдо рд╡рд░реНрдгрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдпрд╛ рдЗрд╕реЗ рдореМрдЬреВрджрд╛ рдПрдХ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ) рдПрдХ рд╕рд╛рде рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЙрдЪрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдирдП рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗред рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рднреА рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╕рднреА рдЯреИрдм (рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдХрдиреЗрдХреНрд╢рди ) рдореЗрдВ рдЖрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рд╣рдо рдереЛрдбрд╝рд╛ рдФрд░ рдЯреИрдм рдЦреЛрд▓рддреЗ рд╣реИрдВ, рд╣рдо рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдПрди рдЯреИрдм рдкрд░ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП, N рдЕрд▓рдЧ рд╣реИ (4 рдпрд╛ 6, рдмрд╣реБрдд рдЫреЛрдЯрд╛)ред рдпрд╣ рд╕реАрдорд╛ рдПрдХ рд╣рдм рд╕реЗ рдЕрдзрд┐рдХ рдПрди рдХрдиреЗрдХреНрд╢рди рдПрдХ рд╕рд╛рде рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИред рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд╛рдлреА рдмрдбрд╝реЗ, рдЖрдк рдПрдХ рд╕рдорд╛рдзрд╛рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рд╕рдорд╛рди рд╕рдВрд╡рд╛рдж рдЦреЛрд▓рд╛ рд╣реИ рдФрд░ рдпрд╛ рддреЛ рдкреБрд░рд╛рдиреЗ рдХреЛ рд╡рд╛рдкрд╕ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рдПрдХ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рдкреНрд░рддрд┐рдмрдВрдз рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рдЬрд┐рддрдиреЗ рдЪрд╛рд╣реЗрдВ рдЯреИрдм рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рджрд┐рдЦрд╛рдПрдВрдЧреЗред рдЗрд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╣рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдирд╣реАрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдм рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рдЗрд╕рдХреЗ
Url рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдерд╛
: im.myProjectSite.com ред рд╕рд╛рдорд╛рдиреНрдп рджрд░реНрдкрдг рдмрдирд╛рдПрдВ:
im1.myProjectSite.com im2.myProjectSite.com im3.myProjectSite.com
рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рд╣рдо рд╣рдм рдПрдбреНрд░реЗрд╕ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдВрдЧреЗред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдкреГрд╖реНрда (рдПрдХ рдирдП рдЯреИрдм рдореЗрдВ рдЦреБрд▓рддреЗ рд╣реИрдВ), рд╡рд┐рдХрд▓реНрдк
im (j + 1) , рдФрд░
j = 1 рдлрд┐рд░ рд╕реЗ
im3 рдХреЗ рдмрд╛рдж рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рд╕реАрдорд╛ рдХреЛ 3N рддрдХ рдмрдврд╝рд╛ рджрд┐рдпрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдордиреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИред
рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдирд╛ рди рднреВрд▓реЗрдВред рдпрджрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рд╣рдм рдХреЗ
рд░рдЬрд┐рд╕реНрдЯрд░ рддрд░реАрдХреЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЕрдкрдиреЗ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЗ рддрд╣рдд рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдФрд░ рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ: рджрд┐рдорд┐рддреНрд░реА рд▓реБрдмреЗрдиреНрд╕реНрдХреА, рдбрд╛рдпрд░реАрд░реА рдХреЗ рдПрдХ рдкреНрд░рдореБрдЦ рдбреЗрд╡рд▓рдкрд░ред рд╡рд╣ рдмрд┐рд▓рд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рджрд┐рд╢рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред