рд╡рд┐рдВрдбреЛрдЬ 8 рд╕реАрдкреА рдФрд░ рд╕рд░реНрд╡рд░ рдмреАрдЯрд╛ рдореЗрдВ, рдЖрдИрдИ 10 рд╕рд╣рд┐рдд рд╕рднреА рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╡реЗрдмрд╕реНрдХреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдЕрдм
рдЖрдИрдИрдЯреАрдПрдл рд╡реЗрдмрд╕реНрдХреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, IE10 W3C
WebSockets API рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛
рд╣реИ ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдирд╡ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WebSockets рд╕реНрдерд┐рд░ рдФрд░ рддреИрдпрд╛рд░ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ W3C WebSockets API рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдкрд░рд┐рдЪрдп рд╣реИред рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ
рдлреНрд▓рд┐рдкрдмреБрдХ рдбреЗрдореЛ рдирд╡реАрдирддрдо рдПрдкреАрдЖрдИ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред
рдЕрдкрдиреЗ
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ WebSockets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛:
WebSockets рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдФрд░ рдЕрдкрдбреЗрдЯ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд HTTP-рдЕрдиреБрд░реЛрдз-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдореЙрдбрд▓ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЬреБрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред WebSockets рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рджреЛ-рддрд░рдлрд╝рд╛, рдкреВрд░реНрдг-рджреНрд╡реИрдз рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рдЦреЛрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрдХреНрд╖ рдЗрд╕ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реА рддрд░рдл рддреБрд░рдВрдд рдбреЗрдЯрд╛ рдкрд╣реБрдВрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЬ рд╕рд╛рдЗрдЯреЗрдВ, рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЧреЗрдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ, рд╡рд┐рддреНрддреАрдп рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред
рд╕рд┐рддрдВрдмрд░ 2011 рдореЗрдВ рдЙрд╕ рд▓реЗрдЦ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рд╕реЗ, рдХрд╛рд░реНрдп рд╕рдореВрд╣реЛрдВ рдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдЧрддрд┐ рдХреА рд╣реИред WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЕрдм IETF рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдорд╛рдирдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдмрди рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, W3C WebSockets API рдЕрдм W3C рдЕрдиреБрд╢рдВрд╕рд╛ рдкреНрд░рддреНрдпрд╛рд╢реА рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП WebSocket API рдХрд╛ рдкрд░рд┐рдЪрдп
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЗрдХреЛ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐
System.Web.WebSockets рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ASP.NET рд╕реЗ
рдирд╛рдо рдкрд╛рда рдФрд░ рдкрд╛рда рдФрд░ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрджреЗрд╢ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рднреЗрдЬреЗ рдЧрдП рдереЗред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рда рдХреЛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкрд╛рда рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдЫрд╡рд┐ рдЦреАрдВрдЪрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрд╛рдЗрдирд░реА рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдлреНрд▓рд┐рдкрдХрд╛рд░реНрдЯ рдбреЗрдореЛ рдореЗрдВ WebSockets рдФрд░ HTTP рдорддрджрд╛рди рдХреЗ рдмреАрдЪ рд╡рд┐рд▓рдВрдмрддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
WebSocket рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╡рд░рдгред
рдпрд╣ рд╕рд░рд▓ рд╡рд┐рд╡рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рдорд╛рдирддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, IE10 рдкреНрд░реЙрдХреНрд╕реА рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрдЯ HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдПрдХ WebSocket рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдПрдХ WebSocket рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реБрдП рдПрдХ рд╣реИрдВрдбрд╢реЗрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

IE10 рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рднреЗрдЬрдХрд░ рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:
HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ / рдЧреВрдБрдЬреЗрдВ
рд╣реЛрд╕реНрдЯ: example.microsoft.com
рдЕрдкрдЧреНрд░реЗрдб: рд╡реЗрдмрд╕реЛрдХреЗрдЯ
рдХрдиреЗрдХреНрд╢рди: рдЕрдкрдЧреНрд░реЗрдб
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ ==
рдореВрд▓: http://microsoft.com
Sec-WebSocket-Version: 13
рдЖрдЗрдП рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рджреЗрдЦреЗрдВред
рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдорд╛рдирдХ HTTP GET рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЕрдиреБрд░реЛрдз рдХреЛ рдлрд╝рд╛рдпрд░рд╡реЙрд▓, рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдФрд░ рдЕрдиреНрдп рд╕реВрдЪрдирд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
HTTP / 1.1 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ / рдЧреВрдБрдЬреЗрдВ
рд╣реЛрд╕реНрдЯ: example.microsoft.com
HTTP рдХрд╛ рд╣реЗрдбрд░ рдЕрдкрдЧреНрд░реЗрдб рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдпрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ HTTP рд╕реЗ WebSocket рддрдХ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдЕрдкрдЧреНрд░реЗрдб: рд╡реЗрдмрд╕реЛрдХреЗрдЯ
рдХрдиреЗрдХреНрд╢рди: рдЕрдкрдЧреНрд░реЗрдб
рд╕рд░реНрд╡рд░, рд╡реЗрдм-рд╕реЙрдХреЗрдЯ-рдХреА рд╣реЗрдбрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рддрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡реЗрдмрд╕реНрдХреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ:
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ ==
рдореВрд▓ рд╣реЗрдбрд░ IE10 рджреНрд╡рд╛рд░рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ
рд╕реНрд░реЛрдд-рдЖрдзрд╛рд░рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓ рд╕рдХреЗред
рдореВрд▓: http://microsoft.com
Sec-WebSocket-Version рд╣реЗрдбрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 13 IETF рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдорд╛рдирдХ рдореЗрдВ рдЕрдВрддрд┐рдо рд╣реИ:
Sec-WebSocket-Version: 13
рдпрджрд┐ рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрддрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЕрджреНрдпрддрди рдЕрдиреБрд░реЛрдз рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ HTTP 101 рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИ:

HTTP / 1.1 101 рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рдЕрдкрдЧреНрд░реЗрдб: рд╡реЗрдмрд╕реЛрдХреЗрдЯ
рдХрдиреЗрдХреНрд╢рди: рдЕрдкрдЧреНрд░реЗрдб
рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рд╕реЗ Sec-WebSocket-Key рд╣реЗрдбрд░ рд╡реИрд▓реНрдпреВ рдХрд╛ рдПрдХ рдорд╛рдирдХреАрдХреГрдд рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ Sec-WebSocket-Accept рд╣реЗрдбрд░ рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK +OO =
IE10 рддрдм Sec-WebSocket-Key рдорд╛рди рдХреЛ Sec-WebSocket-Accept рдорд╛рди рдкрд░ рдореИрдк рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╕рд░реНрд╡рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ WebSocket рд╕рд░реНрд╡рд░ рд╣реИ рдФрд░ рдХреБрдЫ рдФрд░ рдирд╣реАрдВред
рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИрдВрдбрд╢реЗрдХ IE10 рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдЯреАрд╕реАрдкреА рдкрд░ рдПрдХ HTTP рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ 101 рдкреНрд░рддрд┐рд╕рд╛рдж рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдпрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ HTTP рд╕реЗ WebSockets рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рд╕реНрд╡рд┐рдЪ рдХреЗ рдмрд╛рдж рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкрд┐рдХреНрдЪрд░ рдореЗрдВ HTTP рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд▓реНрдХреЗ рд╡реЗрдмрд╕реНрдХреЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдордп рд╕рдВрджреЗрд╢ рджреЛрдиреЛрдВ рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ WebSocket рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рджреЛ рдирдИ URI рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ HTTP рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред
- "Ws:" "//" рд╣реЛрд╕реНрдЯ [":" рдкреЛрд░реНрдЯ ] рдкрде ["?" рдХреНрд╡реЗрд░реА ] "http:" рд╕реНрдХреАрдорд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ 80 рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд (рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб) тАЛтАЛрдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- "Wss:" "//" рд╣реЛрд╕реНрдЯ [":" рдкреЛрд░реНрдЯ ] рдкрде ["?" рдХреНрд╡реЗрд░реА ] "https:" рд╕реНрдХреАрдорд╛ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреЛрд░реНрдЯ 443 рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреАрдПрд▓рдПрд╕ рдкрд░рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдпрд╛ рдЕрдиреНрдп рдордзреНрдпрд╕реНрде рдПрдЬреЗрдВрдЯреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╕рдлрд▓ рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдордзреНрдпрд╡рд░реНрддреА рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдпрд╛рддрд╛рдпрд╛рдд рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИред
рдирд┐рдореНрди рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдПрдХ WebSocket рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ:
var host = "ws://example.microsoft.com"; var socket = new WebSocket(host);
рд░реЗрдбреАрд╕реНрдЯреЗрдЯ - рд░реЗрдбреА ... рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди ... рд▓реЗрдЯреНрд╕ рдЧреЛ ...
WebSocket.readyState рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ: рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ, рдУрдкрди, рдХреНрд▓реЙрд╕рд┐рдВрдЧ рдпрд╛ рдмрдВрджред рдЬрдм WebSocket рдмрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ CONNECTING рдкрд░ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдХрдиреЗрдХреНрд╢рди рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рд░реЗрдбреАрд╕реНрдЯреЗрдЯ рдУрдкреЗрди рдореЗрдВ рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛, рддреЛ рд░реЗрдбреАрд╕реНрдЯреЗрдЯ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрдкрд░реНрдХ рдЦреБрд▓реА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ
рдПрдХ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЦреБрд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред
socket.onopen = function (openEvent) { document.getElementById("serverStatus").innerHTML = 'Web Socket State::' + 'OPEN'; };
рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг: рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдПрдХ рд╕рдлрд▓ рд╣реИрдВрдбрд╢реЗрдХ рдХреЗ рдмрд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╕рд░реНрд╡рд░ WebSocket рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдмрдирддрд╛ рд╣реИ (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдбреЗрдЯрд╛ "рдлреНрд░реЗрдо")ред
рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИ:
- рдлреНрд░реЗрдо рдХрд╛ рдЖрдХрд╛рд░;
- рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд░ (рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдпрд╛ рдкрд╛рда), рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕рдВрджреЗрд╢ рдлреНрд░реЗрдо рдореЗрдВ;
- рдзреНрд╡рдЬ (рдлрд┐рди), рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрджреЗрд╢ рдХрд╛ рдЕрдВрддрд┐рдо рдлреНрд░реЗрдо рд╣реИред

IE10 рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдкреВрд░реЗ рд╕рдВрджреЗрд╢ рдореЗрдВ рдлрд╝реНрд░реЗрдо рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред
рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
Send API рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЛ UTF-8 рдПрдиреНрдХреЛрдбреЗрдб рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рд╕рд╛рде рд╣реА ArrayBuffers рдпрд╛ Blobs рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдкрд╛рда рд╕рдВрджреЗрд╢ (UTF-8) рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рддрдм рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ Websocket.readyState OPEN рд░рд╛рдЬреНрдп рдореЗрдВ рд╣реИ:
function sendTextMessage() { if (socket.readyState !== WebSocket.OPEN) { return; } var e = document.getElementById("textmessage"); socket.send(e.value); }
рдпрд╣ рдХреЛрдб рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЦреАрдВрдЪреА рдЧрдИ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдмрд╛рдЗрдирд░реА рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ:
function sendBinaryMessage() { if (socket.readyState != WebSocket.OPEN) { return; } var sourceCanvas = document.getElementById('source');
рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛
рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрджреЗрд╢ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдПрдХ MessageEvent рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ MessageEvent.data рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдкрд╛рда рдпрд╛ рдмрд╛рдЗрдирд░реА рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдХреЛрдИ рдмрд╛рдЗрдирд░реА рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ WebSocket.binaryType рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рддреЛ рдПрдХ рдмреВрдБрдж рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдПрдХ ArrayBuffer рдХреЗ рд░реВрдк рдореЗрдВред рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдмреНрд▓реЙрдм рдпрд╛ рдПрд░реЗрдмрдлрд╝рд░ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг "рдмреВрдБрдж" рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдХрд┐рд╕реА рд╡реЗрдмрд╕реЛрдХреЗрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдпрд╛ рдкрд╛рда рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдбреЗрдЯрд╛ рдмрд╛рдЗрдирд░реА рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рдХреНрд╖реНрдп рдХреИрдирд╡рд╛рд╕ рдкрд░ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ UTF-8 рдПрдиреНрдХреЛрдбреЗрдб рдкрд╛рда рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
socket.onmessage = function (messageEvent) { if (messageEvent.data instanceof Blob) { var destinationCanvas = document.getElementById('destination'); var destinationContext = destinationCanvas.getContext('2d'); var image = new Image(); image.onload = function () { destinationContext.clearRect(0, 0, destinationCanvas.width, destinationCanvas.height); destinationContext.drawImage(image, 0, 0); } image.src = URL.createObjectURL(messageEvent.data); } else { document.getElementById("textresponse").value = messageEvent.data; } };
WebSocket рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдиреЗрдВред
рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рд╣реИрдВрдбрд╢реЗрдХ рдХреА рддрд░рд╣, рдПрдХ рд╡рд┐рджрд╛рдИ рд╣реИрдВрдбрд╢реЗрдХ рднреА рд╣реИред рдХреЛрдИ рднреА рдкрдХреНрд╖ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рд╕рд░реНрд╡рд░) рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдлреНрд░реЗрдо (рд╕рдорд╛рдкрди рдлреНрд░реЗрдо) рджреВрд╕рд░реА рддрд░рдл рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╛рдкрди рдлреНрд░реЗрдо рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдпреБрдХреНрдд рдорд╛рдиреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рдорд╛рдкрди рдлреНрд░реЗрдо рдХреЗ рдкреНрд░реЗрд╖рдХ рдХреЛ рд╕рдорд╛рдкрди рдлреНрд░реЗрдо рдХреЗ рдмрд╛рдж рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬрдм рджреВрд╕рд░рд╛ рдкрдХреНрд╖ рдПрдХ рд╕рдорд╛рдкрди рдлреНрд░реЗрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдкрди рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдорд╛рдкрди рдлреНрд░реЗрдо рдореЗрдВ рдХрдИ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред

рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдмрдВрдж рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдФрд░ рд╕рдорд╛рдкрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛
рдЖрд╡реЗрджрди рдПрдХ рдЦреБрд▓реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдХ рдХрд░реАрдмреА рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╡рд┐рджрд╛рдИ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддрд╛ рд╣реИ:
socket.close(1000, "normal close");
рдХрд┐рд╕реА рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрдиреЗрдХреНрд╢рди рд╕рдорд╛рдкрди рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред
socket.onclose = function (closeEvent) { document.getElementById("serverStatus").innerHTML = 'Web Socket State::' + 'CLOSED'; };
рдХрд░реАрдмреА рдПрдкреАрдЖрдИ рджреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реВрдЪреА рдФрд░ рдПрдХ рд╡рд┐рд╡рд░рдг рд╕реЗ рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЛрдбред рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдпрд╛ рддреЛ 1000 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ 3000 рд╕реЗ 4999 рддрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдм тАЛтАЛрдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддреИрдпрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ CLOSING рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред IE10 рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рд╕рдорд╛рдкрди рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд░реЗрдбреАрд╕реНрдЯреЗрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд░реАрдмреА рдШрдЯрдирд╛ рдХреЛ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡реЗрдмрд╕рд╛рдЗрдбреНрд╕ рдЯреНрд░реИрдлрд╝рд┐рдХ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
Fiddler рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп HTTP рдкреНрд░реЙрдХреНрд╕реА рд╣реИред рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдХреБрдЫ рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдЖрдк рдПрдХ WebSocket рд╣реИрдВрдбрд╢реЗрдХ рдореЗрдВ рд╣реЗрдбрд░ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рд╕рднреА WebSocket рд╕рдВрджреЗрд╢ рднреА рд▓реЙрдЧ рдЗрди рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рд╕рд░реНрдкрд┐рд▓" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрджреЗрд╢ рдХреИрд╕реЗ рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рднреЗрдЬрддрд╛ рд╣реИ:

рдирд┐рд╖реНрдХрд░реНрд╖
рдпрджрд┐ рдЖрдк WebSockets рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рд┐рддрдВрдмрд░ 2011 рдореЗрдВ Microsoft // рдмрд┐рд▓реНрдб / рд╕рдореНрдореЗрд▓рди рд╕реЗ рдЗрди рд╕рддреНрд░реЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
рдпрджрд┐ рдЖрдк WebSocket рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Microsoft рддрдХрдиреАрдХреЛрдВ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдпреЗ рд▓реЗрдЦ рдПрдХ рдЕрдЪреНрдЫреЗ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдЖрдЬ рд╡реЗрдмрд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдиреЗ рдЫрд╛рдкреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред
-рдмреНрд░рд╛рдпрди рд░реЗрдореЛрд░, рд╡рд░рд┐рд╖реНрда рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореИрдиреЗрдЬрд░, рд╡рд┐рдВрдбреЛрдЬ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ