рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд╣рд▓реЗ рднреА рдХрдИ рд▓реЗрдЦ рдЖ рдЪреБрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рд╕рднреА рд╕рддреНрдп рд╕рд╛рдордиреЗ рдЖ рдЪреБрдХреЗ рд╣реИрдВред рдЬреЛ рд▓реЛрдЧ рдЪреВрдХ рдЧрдП рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП
рд╕рд░реНрд╡рд░-рд╕реЗрдВрдЯреЗрдб рдИрд╡реЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ ред
рд╕рд░реНрд╡рд░-рд╕реЗрдВрдЯреЗрдб-рдИрд╡реЗрдВрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг:
(new EventSource('/events')).addEventListener('message', function (e) {
document.getElementById('body').innerHTML += e.data + '
';
}, false);
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ http рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдирд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣рдо рд╕рдВрджреЗрд╢ рдкрд╛рда рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕реА рд╕рдордп, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ XMLHTTPRequest рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдЕрдиреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдирд╡реАрдирддрдо рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЕрдм рдХреНрд░реЛрдо, рдУрдкреЗрд░рд╛ 11+ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд╕рдорд░реНрдерди рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдСрд░реЛрд░рд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ IE8 +, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 3.5+ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдорддрджрд╛рдиред рдЗрд╕ рдкреНрд░рдХрд╛рд░, WebSockets рдХреА рддреБрд▓рдирд╛ рдореЗрдВ EventSource рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерд┐рдд рд╣реИред (рд╣рдо рдпрд╣рд╛рдВ рдореВрд▓ рд╕рдорд░реНрдерди рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ -
http://caniuse.com/#search=eventsource )
рдЙрд╕реА рд╕рдордп, рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд░реНрд╡рд░-рднреЗрдЬреЗ рдЧрдП рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдирдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдЬрд╛рдХреНрд╕ рдкрд░рд┐рд╡рд╣рди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕рд╛ рдХрд┐ рд╕реЙрдХреЗрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд╣рди - рдЕрдзрд┐рдХ рд╕реВрдХреНрд╖реНрдорддрд╛)
рдФрд░ рдЗрд╕рд▓рд┐рдП, IE8
XDomainRequest рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд░реНрд╡рд░-рдкреБрд╢ рддрдХрдиреАрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд╣рдо http рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рднреА рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, XDomainRequest рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреИрдбрд┐рдВрдЧ -
2 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, XDomainRequest рдЕрдиреБрд░реЛрдз рд╣реЗрдбрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП
рдЕрдВрддрд┐рдо-рдЗрд╡реЗрдВрдЯ-рдЖрдИрдбреА рдХреЛ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп (POST) рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
XDomainRequest рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдФрд░ рдкрдврд╝реЗрдВ -
http://blogs.msdn.com/b/ieinternals/archive/2010/04/06/comet-streaming-in-internet-explorer-with-xxhttprequest-and-xdomainrequest.aspx ? рдкреЗрдЬрдЗрдВрдбреЗрдХреНрд╕ = 1 )
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдорд╛рдирдХ XMLHttpRequest (
javascript.ru/ajax/comet/xmlhttprequest-interactive рд▓реЗрдЦ рджреЗрдЦреЗрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ
рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕рд░реНрд╡рд░-рдкреБрд╢ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдХреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП, XMLHttpRequest (рдпрд╛рдиреА, рдкреНрд░рддреНрдпреЗрдХ рднреЗрдЬреЗ рдЧрдП рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рдж рдРрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдВрдмреА-рдорддрджрд╛рди рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рддреЛ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдкреНрдд EventSource рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХрд╛ рдореВрд▓ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╣реИ
https://github.com/Yaffle/EventSource ред
рдХреЛрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИрдВ, рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:
<script type="text/javascript" src="eventsource.js"></script>
рд╕рд░реНрд╡рд░-рдкреБрд╢ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдорддрджрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдореЗрдВ рд╕рд╛рдЗрдЯ рдЦреЛрд▓рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ, рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЫрд╣ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдм 2 рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ http рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реАрдорд╛ рдЬрд▓реНрджреА рд╕реЗ рдкрд╣реБрдВрдЪ рдЬрд╛рддреА рд╣реИред
SharedWorker рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред SharedWorker рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ EventSource рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ EventSource рд╕реЗ рд╕рднреА рдХрдиреЗрдХреНрдЯреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рднреА рдИрд╡реЗрдВрдЯ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ:
рдЙрджрд╛рд╣рд░рдг, shareworker.js:
var es = new self.EventSource('events'),
history = [];
es.addEventListener('message', function (e) {
history.push(e.data);
}, false);
self.onconnect = function onConnect(event) {
var port = event.ports[0]; //
history.forEach(function (data) {
port.postMessage(data);
});
es.addEventListener('message', function (e) {
port.postMessage(e.data);
}, false);
}
рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, SharedWorker рдХреЗрд╡рд▓ рдУрдкреЗрд░рд╛ 10.6+ рдФрд░ рдХреНрд░реЛрдо (рд╕рдлрд╛рд░реА) рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдЙрд╕реА рд╕рдордп, рдУрдкреЗрд░рд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЗрд╡реЗрдВрдЯрд╕реЙрд░реНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ "рдЗрдирд╕рд╛рдЗрдб" рд╢реЗрдпрд░реНрдбрд╡реЙрдХрд░ (рдЬреЛ рдХрд┐ рд╢реЗрдпрд░рдбреЙрд░реНрдХрд░рдЧреНрд▓реЛрд╕реНрдХреЛрд╕реНрдХреЛрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИ) рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХрд╛рдзрд┐рдХ рдХрдиреЗрдХреНрд╢рди рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдХреЗрд╡рд▓ рд╡реЗрдмрдХрд┐рдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдбреЛрдореЗрди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐ EventSource рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ EventSource рдбреЛрдореЗрди рдкрд░ рд╕реНрдерд┐рдд рдПрдХ iframe html рдкреГрд╖реНрда рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ, рдЬреЛ EventSource рдХреЛ "рдЯреНрд░рд┐рдЧрд░" рдХрд░реЗрдЧрд╛ рдФрд░ "рдкреЛрд╕реНрдЯрдореЗрд╕реЗрдЬ" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ (рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛ рд▓реЗрдЦ рдерд╛ -
http: // habrahabrред com / рдмреНрд▓реЙрдЧреНрд╕ / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ / 120336 / , рдЬреЛ рдХрд┐ easyxdm рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди "window.postMessage" рдХреЛ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ (
http://caniuse.com/#search=postmessage ) рджреНрд╡рд╛рд░рд╛ рдХрд╛рдлреА рд╕рдорд░реНрдерди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдВрддрд┐рдо-рдШрдЯрдирд╛-рдЖрдИрдбреА
рдЬрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛ рддреЛ рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдХреБрдЫ рдиреЗрдЯрд╡рд░реНрдХ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рд╣реИ), EventSource рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ (рдпрд╣ рд╕рдордп рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рд╣реЗрдбрд░ рд▓рд╛рд╕реНрдЯ-рдЗрд╡реЗрдВрдЯ-рдЖрдИрдбреА рдореЗрдВ рд╣реЛрдЧрд╛ - рдкреНрд░рд╛рдкреНрдд рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢ рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ - рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: 1000 \ n
рдЖрдИрдбреА: 123
рдбреЗрдЯрд╛: рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб \ n \ n`
рд░рд┐рдЯреНрд░реА` рдлрд╝реАрд▓реНрдб рд╕рд░реНрд╡рд░ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ
рдХрд┐рддрдиреЗ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИред рдкреБрди: рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдкрд░ `
рдЖрдИрдбреА` рдлрд╝реАрд▓реНрдб рдХреЛ рд▓рд╛рд╕реНрдЯ-рдЗрд╡реЗрдВрдЯ-рдЖрдИрдбреА рд╣реЗрдбрд░ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЬрдорд╛ рд╣реБрдИ рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рднреА рдпрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ рд╕рднреА рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, CSRF рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд┐рдирд╛ GET рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреИрдЯ рд╕рдордп рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╣реИ, рдХреНрд╖рдорд╛ рдХрд░реЗрдВред
рдЪреИрдЯ рдЙрджрд╛рд╣рд░рдг:
http://hostel6.ru:8002
рдЪреИрдЯ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
https://github.com/Yaffle/EventSourceрдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!
UPD: IE8 +, FF4-5 рдХреЗ рд▓рд┐рдП CORS рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛