HTTP рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп

рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ, рдХрд╛рдо рдкрд░, рдореБрдЭреЗ рдЬрд╛рд╡рд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдлреНрд░рдВрдЯ-рдПрдВрдб рд╡реЗрдм рдПрдВрдб рдХреЗ рдмреАрдЪ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред рдХрд╛рд░реНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╡рд┐рд▓рдВрдм рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рдЬрдмрдХрд┐ рдЕрдкрдбреЗрдЯ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 100 рдЕрдкрдбреЗрдЯ рдХреА рдЧрддрд┐, рдФрд░ рдкреНрд░рддрд┐ рдорд┐рдирдЯ 1 рдЕрдкрдбреЗрдЯ, рдЕрд░реНрдерд╛рддреН рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЕрдиреБрд░реЛрдз рди рднреЗрдЬреЗрдВред

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


рд╡реИрд╕реЗ, рдЬрд┐рд╕ рдпреЛрдЬрдирд╛ рд╕реЗ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



рдФрд░ рдпрд╣рд╛рдБ рдХреБрдЫ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЛрдб (рдХреБрдЫ рднреА рдЕрд▓реМрдХрд┐рдХ рдирд╣реАрдВ рд╣реИ: рдПрдХ рдЯрд╛рдЗрдорд░ + рдПрдХ JSON рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛):

function onLoad() { // Invoke request update each second intervalId = setInterval ( requestUpdate(), 1000 ); } function requestUpdate() { $.getJSON(URL, JSONParams, function(data) { $.each(data, function(key, val) { // Process data }) }).success(function(){ // Succes handler }).error(function(){ // Error handler }); }; function onUnload() { clearInterval(intervalID); }; $(document).ready(function() { // Disable caching for ajax $.ajaxSetup({ cache: false }); }); 


рдФрд░ рд╕рд░реНрд╡рд░ рдХреА рдУрд░ рд╕реЗ (рдиреИрддрд┐рдХ рдкрд╣рд▓реБрдУрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрд╡реЗрджрди рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХрд╛ рдмрд┐рдВрджреБ рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рд╣реИ):

 public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //Get reqeust parameters JSONObject jsonObj = JSONObject.fromObject(req.getParameterMap()); //Some code //Get writer PrintWriter out = res.getWriter(); //Create json object for response Map<String, String[]> map = retriever.getUpdates(); JSONObject jsonObject = JSONObject.fromObject(map); //Send response out.println(jsonObject); //Finish response! out.close(); } 


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

рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЯреЙрдордХреИрдЯ рдореЗрдВ рдирд┐рдХрд▓рд╛, рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ omet (Pushing) рддрдВрддреНрд░ рдХрд╛ рднреА рд╕рдорд░реНрдерди рд╣реИред рдпрд╣ CometProcessor рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг рдЯреЙрдордХреИрдЯ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕ рдЗрдВрдЬрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдКрдкрд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ (рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдореЗрдВ)ред

рд▓рдВрдмреЗ рдорддрджрд╛рди рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХрд╛рдо рдХреА рдпреЛрдЬрдирд╛:



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

Javascpirt рдкрд░ рдПрдХ рд▓рдВрдмреЗ рдорддрджрд╛рди рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛:
 function go(){ var url = "your url" var request = new XMLHttpRequest(); request.open("GET", url, true); request.setRequestHeader("Content-Type","application/x-javascript;"); request.onreadystatechange = function() { if (request.readyState == 4) { if (request.status == 200){ if (request.responseText) { //Something } } go(); } }; request.send(null); } 


рдФрд░ рдпрд╣ jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 function poll(){ $.ajax({ url: "your url", success: function(data){ //Something }, dataType: "json", complete: poll, timeout: 30000 }); }); 


рд╕реНрдЯреНрд░реАрдо рдХрдиреЗрдХреНрд╢рди рдХреА рдпреЛрдЬрдирд╛:



рдпрд╣рд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреЗрд╡рд▓ 1 рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рд╕рд░реНрд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рднреЗрдЬрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓реЗрдЦрдХ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рднреЗрдЬрдирд╛ рдХреЗрд╡рд▓ рдлреНрд▓рд╢ () рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдЯреНрд░реАрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
 function switchXHRState() { switch (this.readyState) { case 0: $("#messages").append("open() has not been called yet."); break; case 1: $("#messages").append("send() has not been called yet."); break; case 2:$("#messages").append("send() has been called, headers and status are available."); break; case 3: if (this.status == 200) {Some lines of code} break; case 4: $("#messages").append("Complete!"); break; } }; function go() { var url = "comet"; var request = new XMLHttpRequest(); request.onreadystatechange = switchXHRState; request.open("GET", url, true); request.setRequestHeader("Content-Type", "application/x-javascript;"); request.setRequestHeader("Cache-Control", "no-cache"); request.setRequestHeader("Cache-Control", "no-store"); request.setRequestHeader("Cache-Control", "no-store"); request.send(null); } 


рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА:
1. рдкреБрд╢ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдкрд░ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ
2. рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдПрдХ рд▓реЗрдЦ , рдЬрд╣рд╛рдВ рд╕реЗ рдЪрд┐рддреНрд░ рд▓рд┐рдП рдЧрдП рдереЗ
3. AJAX рдкреИрдЯрд░реНрди (рдирд╛рдо рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ)
4. XMLHttpRequest рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди

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


All Articles