рдХреБрд╢рд▓ рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдмрдВрдзрди

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

рдкрд░рд┐рдЪрдп


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

рдЪреБрдиреМрддрд┐рдпреЛрдВ


рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдЧреИрд░-рдорд╛рдирдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдФрд░ рдЖрдЬ рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдирд╛рдорд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

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

рдЫрд╡рд┐

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╕рд┐рдЧреНрдирд▓рдЖрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдкреАрдЖрдИ рдЗрд╕ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдЗрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рддреАрд╡реНрд░ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реА рдЪреБрдиреМрддреА рд╣реИред

рд╣рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд┐рдЧреНрдирд▓рдЖрд░ рдПрдХ рдкреНрд░рдХрд╛рд╢рдХ-рдЧреНрд░рд╛рд╣рдХ рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ, рд╕рдВрджреЗрд╢ рд░реВрдЯрд┐рдВрдЧ рдХреА рдЗрдХрд╛рдИ рдПрдХ рдХрдиреЗрдХреНрд╢рдирдЖрдИрдбреА рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдПрдХ рд╕рдореВрд╣ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдПрдХ рд╕рдореВрд╣ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдХрд░, рд╣рдо рд╕рднреА рдХрдиреЗрдХреНрд╢рдирдЖрдИрдбреА рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╕рдореВрд╣ рдореЗрдВ рд╣реИрдВред рд╕рдореВрд╣реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ - рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдмрд╕ AddToGroupAsync API рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:

public override async Task OnConnectedAsync() { foreach (var chat in _options.Chats) await Groups.AddToGroupAsync(ConnectionId, chat); await Groups.AddToGroupAsync(ConnectionId, Client); } 

рдФрд░ рд╕рдореВрд╣ рдХреИрд╕реЗ рдЫреЛрдбрд╝реЗрдВ? рдбреЗрд╡рд▓рдкрд░реНрд╕ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐ RemoveFromGroupAsync рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:

 public override async Task OnDisconnectedAsync(Exception exception) { foreach (var chat in _options.Chats) await Groups.RemoveFromGroupAsync(ConnectionId, chat); await Groups.RemoveFromGroupAsync(ConnectionId, Client); } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбреЗрдЯрд╛ рдпреВрдирд┐рдЯ ConnectionId рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЛрдореЗрди рдореЙрдбрд▓ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, ConnectionId рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИрдВред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд╕рдВрдЧрдарди, рдХрдиреЗрдХреНрд╢рдирдЖрдИрдбреА рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рд╕рднреА ConnectionId рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдПрд░реЗ рд╣реИ рдЬреЛ рдЧреНрд░реБрдк рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдРрд╕реА рдХреЛрдИ рд╕рд░рдгреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рдХреА рдЧрдИ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╛рдХреА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдкрд░ред

рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ


MSDN рдкрд░ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрднрд╛рдЧ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИрдВ:

  • рдЗрди-рдореЗрдореЛрд░реА рд╕реНрдЯреЛрд░реЗрдЬ
  • "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣"
  • рд╕реНрдерд╛рдпреА рдмрд╛рд╣рд░реА рд╕рдВрдЧреНрд░рд╣рдг

рдХрдиреЗрдХреНрд╢рди рдХреИрд╕реЗ рдЯреНрд░реИрдХ рдХрд░реЗрдВ?
рдЖрдк OnConnectedAsync рдФрд░ OnDisconnectedAsync рд╣рдм рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрд╢рди рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

рд▓реЗрдХрд┐рди рд░реЗрдбрд┐рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╡реИрд╕реЗ, рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд╕реНрдореГрддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдПрдХ рддреАрд╡реНрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдПрдХ рдУрд░, рдХреБрдВрдЬреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ, рджреВрд╕рд░реА рддрд░рдл, рд╕рдореВрд╣ред

"рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣"


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

  1. рд╕рдВрджреЗрд╢ рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ
  2. рд╕рднреА рдорд╛рдирд╡ рдЙрдкрдХрд░рдгреЛрдВ рддрдХ рд╕рдВрджреЗрд╢ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА? рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдЪреБрдиреМрддреА рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕рдореВрд╣ рд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдХрд┐ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рд╕рдореВрд╣ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдмрд╛рдХреА рднреА рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╕реВрдЪреА рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╣рдордиреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдкрд╣рд▓ рдХреА рдереАред

"рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдореВрд╣" рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИред рджреВрд╕рд░рд╛ рдХрджрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ "рдорд┐рд░рд░" рдмрдирд╛рдирд╛ рд╣реИред рд╣рд╛рдВ, рд╣рд╛рдВ, рджрд░реНрдкрдгред

рдЖрдИрдирд╛


рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗ рдЧрдП рдХрдорд╛рдВрдб рдХрд╛ рд╕реНрд░реЛрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВред рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ - рд╕рд░реНрд╡рд░ рдХреЛ рдХрдорд╛рдВрдб рднреЗрдЬреЗрдВ:

 this.state.hubConnection .invoke('post', {message, group, nick}) .catch(err => console.error(err)); 

рдФрд░ рд╣рдо рдирдП рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдореВрд╣ рдХреЗ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 public async Task PostMessage(PostMessage message) { await Clients.Group(message.Group).SendAsync("message", new { Message = message.Message, Group = message.Group, Nick = ClientNick }); } 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрдИ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдпрд╛ рддреЛ рдХрдиреЗрдХреНрд╢рди рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреНрд░рд╛рд╣рдХ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдпрд╛ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЪреИрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдХрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдЯреАрдо рдкрд╣рд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣" рдкрд░ рдЬрд╛рдПрдЧреА, рдЬреЛ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬ рджреЗрдЧреА, рдЕрд░реНрдерд╛рддред " рджрд░реНрдкрдг ред" рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░реНрд╡рд░ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╣реА рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣рд╛рдВ рд╕рд░реНрд╡рд░ рдЪреИрдЯ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 public async Task LeaveChat(LeaveChatMessage message) { await Clients.OthersInGroup(message.Group).SendAsync("lost", new ClientCommand { Group = message.Group, Nick = Client }); await Clients.Group(Client).SendAsync("mirror", new MirrorChatCommand { Method = "unsubscribe", Payload = new UnsubscribeChatMessage { Group = message.Group } }); } 

 public async Task Unsubscribe(UnsubscribeChatMessage message) { await Groups.RemoveFromGroupAsync(ConnectionId, message.Group); } 

рдФрд░ рдпрд╣рд╛рдБ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рд╣реИ:

 connection.on('mirror', (message) => { connection .invoke(message.method, message.payload) .catch(err => console.error(err)); }); 

рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:

  1. рдЧреНрд░рд╛рд╣рдХ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ - рд╕рд░реНрд╡рд░ рдХреЛ "рдЫреБрдЯреНрдЯреА" рдХрдорд╛рдВрдб рднреЗрдЬрддрд╛ рд╣реИ
  2. рд╕рд░реНрд╡рд░ "рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм" рдХрдорд╛рдВрдб "рдорд┐рд░рд░ рдЧреНрд░реБрдк" рдХреЛ "рдорд┐рд░рд░" рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ
  3. рд╕рдВрджреЗрд╢ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдВрджреЗрд╢ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
  5. рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдкрд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рдореВрд╣ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдирддреАрдЬрддрди, рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрд╡рдпрдВ рдЙрди рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗ, рдЬрд┐рдирд╕реЗ рд╡реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ рдФрд░ рд╣рдореЗрдВ рдХреБрдЫ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд░реНрд╡рд░ рдХреЗ рд╣рд╛рд░реНрдб рд░рд┐рдмреВрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдЖрдПрдЧреАред

рддреЛ рд╣рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


"рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣" рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ "рджрд░реНрдкрдг" рд╣реЛрдиреЗ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ? рдЕрдкрдиреА рд░рд╛рдп рдХрдореЗрдВрдЯ рдореЗрдВ рд╢реЗрдпрд░ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб:

github.com/aesamson/signalr-server
github.com/aesamson/signalr-client

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


All Articles