рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг
рдЕрдХреНрд╕рд░, рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕, рд╕рд╛рде рд╣реА рд╕рд╛рде рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдХрд┐рд╕реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореАрдЯрд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ, рдХреЙрд▓ рдХрд░реЗрдВ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢реЗрдбреНрдпреВрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ (рдЯреВрдбреВ рд╢реАрдЯ), рдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рдПрдВред
рдпрджрд┐ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд╛рдорд╛рдЬрд┐рдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ, рдлрд┐рд░ рд╕реАрдзреЗ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, VKontakte рдиреЗрдЯрд╡рд░реНрдХ рдЗрд╕рдХреЗ рд▓рд┐рдП
safe.sendNotification рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ;
рд╕рд╣рдкрд╛рдард┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП:
рд╕реВрдЪрдирд╛рдПрдВ ред
рдФрд░ Apple рдФрд░ Android рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреА рд╕реВрдЪрдирд╛рдПрдВ рдХреНрд░рдорд╢рдГ
Apple Push Notification Service рдФрд░
Android Cloud рд╕реЗ Device Messaging (C2DM) рддрдХ рднреЗрдЬреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╡рд┐рдХрд▓реНрдк
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдЕрдЪрд▓ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
Node.js (0.6.x) рдФрд░ рд░реЗрдбрд┐рд╕ред рдкреНрд▓рд╕ рдкреНрд░рд╛рдкреНрдд рдФрд░ рднреЗрдЬреЗ рдЧрдП рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП
рдкреНрд░рддрд┐рдЬреНрдЮрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд┐рдо UI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рд╡реНрдпрдХреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ
рдХреНрд▓рд╕реНрдЯрд░ рдореЙрдбреНрдпреВрд▓ (0.6 рдореЗрдВ рд╢рд╛рдорд┐рд▓) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рдереА, Node.js рд╕рдВрд╕реНрдХрд░рдг 0.4 рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ
рдХреНрд▓рд╕реНрдЯрд░ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд░реЗрдбрд┐рд╕ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдмреЙрдХреНрд╕ рдХреЗ рдареАрдХ рдмрд╛рд╣рд░ рд╣реИ (рдЙрд╕реА рдореЗрдореЗрдЪреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ)ред рд╕рд╛рде рд╣реА рдХрд╛рд░реНрдп рдХрддрд╛рд░реЛрдВ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрджреЗрд╢реЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ред рдФрд░ рдпрд╣ рднреА рдХреНрдпреЛрдВрдХрд┐
Youporn.com рдЕрдм 100% рд░реЗрдбрд┐рд╕ рд╕рд╛рдЗрдЯ рд╣реИрдХреЛрд░ рдПрдкреАрдЖрдИ
server_name / send_delayed - рд╡рд┐рд▓рдВрдмрд┐рдд рдЕрдзрд┐рд╕реВрдЪрдирд╛ (GET рдФрд░ POST рджреЛрдиреЛрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ)
- рджреЗрд░реА - рдЕрдВрддрд░рд╛рд▓ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рднреЗрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рд╕реЗрдХрдВрдб рдореЗрдВ рд╕реЗрдЯ)
- url - рд╕реАрдзреЗ рд╡рд╣ рдкрддрд╛ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╕рдордп рдЖрдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП, рдпрд╣ sendNotification рдпрд╛ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬ рд░рд╣рд╛ рд╣реИред SendSimple, рдкреБрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ APNS рдпрд╛ C2DN рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред
- рдпреВрдЖрдИрдбреА - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреАред
- рдкреНрд░рдХрд╛рд░ - рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ (рдирд┐рдпреБрдХреНрддрд┐ 1, рдирд┐рдпреЛрдЬрд┐рдд_рдХреЛрд▓)
- recheck_url - рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрддрд╛ рдЬрд┐рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрдорд╛рдг рдХреЛ рддреЗрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рд░рджреНрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред url рдХреЛ "рдареАрдХ" рдпрд╛ "рддреНрд░реБрдЯрд┐" рдХрд╛ рдЙрддреНрддрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЙрддреНрддрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рднреЗрдЬреА рдЬрд╛рдПрдЧреАред (рдкреИрд░рд╛рдореАрдЯрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ рдФрд░ рдпрджрд┐ рдпрд╣ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ рддреЛ рдХреЛрдИ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА)
- send_than_online - рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░, рдпрджрд┐ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рднреЗрдЬрдиреЗ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм / user_online рдЕрдиреБрд░реЛрдз рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд╢реБрд░реВрдЖрдд рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рддрд┐ рджрд┐рди рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреИрдХреЗрдЬ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред
server_name / user_online - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдирд╛ рд▓реЗ рд▓реЛ (рдпрджрд┐ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ) рдФрд░ рднреЗрдЬреЗрдВ
- рдпреВрдЖрдИрдбреА - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА
рдРрдк рдбрд┐рдЬрд╛рдЗрди
рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╕рдВрд░рдЪрдирд╛рдПрдВ:
рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ - SORTEDSET рдЬрд┐рд╕рдореЗрдВ рд░реИрдВрдХ рдШрдЯрдирд╛ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛;
рдСрдирд▓рд╛рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдХрддрд╛рд░ - рдкреНрд░рддреНрдпреЗрдХ рдпреВрдЖрдИрдбреА рдХреЗ рд▓рд┐рдП SORTEDSET рдЕрд▓рдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░реИрдВрдХ рдШрдЯрдирд╛ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛;
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ - рд╕реВрдЪреА - рдпрджрд┐ рдпрд╣ рд╕рдВрджреЗрд╢ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛
1. рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рдХрдИ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ;
2. рдЖрд░рдИрдкреАрдПрд▓ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ;
3. рдПрдХ
рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рд╕реНрдХреИрдирд░ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ (
рдСрдирд▓рд╛рдЗрди рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рд╕реНрдХреИрди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ);
4. рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдкрддрди рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред
5. рдкреВрд░реНрдг рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ;
6. рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдХреИрдирд░ рд╡рд░реНрддрдорд╛рди рд╕рдордп рд╕реЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ 100 рдХреЗ рдмрд░рд╛рдмрд░ рд░рд╛рд╢рд┐ рдореЗрдВ
рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рд╕реЗ ZREVRANGEBYSCORE рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрди-рджреЗрди рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ
рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рдиреЗрд╡рд╛рд▓рд╛
1. send_delayed рдпрд╛ user_online рдХрдорд╛рдВрдб рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпреЗ рдШрдЯрдирд╛рдПрдБ JSON.stringify рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдЪрдПрдПрд╕рдПрдЪ рдореЗрдВ рдЬреЗрдПрд╕рдПрди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИрдВред
Msgpack рдореЗрдВ рдЗрд╡реЗрдВрдЯ рд╕реНрдЯреЛрд░реЗрдЬ
рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ рд╣реИред рдпрджреНрдпрдкрд┐ рдЙрдкрд░реЛрдХреНрдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рд░рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЧрддрд┐ рдореЗрдВ рдХреЛрдИ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рдереАред рдШрдЯрдирд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдШрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдПрдХ
рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдШрдЯрдирд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп + рджреЗрд░реА рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рдЬреАрд╡рдирдХрд╛рд▓ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2.
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ
рдХрддрд╛рд░ рд╕реНрдХреИрдирд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛
рд╕реНрдХреИрдирд░ BLPOP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ LIST рд╕реЗ рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдЙрдиреНрд╣реЗрдВ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рд╡реЗ рдХрддрд╛рд░ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде MONITOR рдХрдорд╛рдВрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд▓реЙрдЧ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
1336484301.674405 "zrevrangebyscore" "actual_queue_test-queue" "1336484301673" "-inf" "limit" "0" "100"
1336484301.675102 "zrevrangebyscore" "actual_queue_test-queue" "1336484301674" "-inf" "limit" "0" "100"
1336484301.675387 "zrevrangebyscore" "actual_queue_test-queue" "1336484301675" "-inf" "limit" "0" "100"
// fill processing queue
Worker.prototype.fetch = function(fn) {
var self = this;
this.client.zrevrangebyscore(this.queue_key, Date.now(),
"-inf", "limit", 0, self.pack, function(err, reply) {
process.nextTick(function() {
self.fetch();
}); // re-schedule fetch
...
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо рдЕрдЧрд▓реЗ рдЯрд┐рдХ рдкрд░ рд▓рд╛рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдХрддрд╛рд░ рдореЗрдВ рдХреЛрдИ рдШрдЯрдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯрд┐рдХ рдкрд░ рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
JSON.parse рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЕрдиреБрдкрд╕реНрдерд┐рдд рдпрд╛ (рд╡рд░реНрддрдорд╛рди рд╕рдордп - рдХреБрдВрдЬреА> USER_POLL_THRESHOLD - 30 рдорд┐рдирдЯ) - рд╣рдо
рдЕрдВрддрд┐рдо рднреЗрдЬрдиреЗ рдХреА
рдХреБрдВрдЬреА рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо рдЙрд╕ рдЗрд╡реЗрдВрдЯ-рдбреЗрдЯрд╛ рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ UrlSender рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ, recheck_url рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдХреЛрдИ рд╣реЛред рдпрджрд┐ http рдЕрдиреБрд░реЛрдз рдкрд░ 200 рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдИрд╡реЗрдВрдЯ 'рдЗрд╡реЗрдВрдЯ-
рд╕реЗрдВрдб ' рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдИрд╡реЗрдВрдЯ рдХреЛ рдорд┐рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рд╡рд░реНрддрдорд╛рди рд╕рдордп рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП
рдЕрдВрддрд┐рдо рднреЗрдЬрдиреЗ рдХреА
рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдСрдирд▓рд╛рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреНрд░рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП
рдСрдирд▓рд╛рдЗрди рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ
рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, ZREVRANGEBYSCORE рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдХрдЯрддрдо рдШрдЯрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо USET_POLL_THRESHOLD_ONLINE рд╕реЗрдЯ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рднреЗрдЬрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрддрд╛рд░ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ
рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рд╕реЗ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг
рд╕реНрд╡рд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рд░реЛрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд░реЗрдбрд┐рд╕ рд▓рд┐рд╕реНрдЯ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдирд╛ рд╣реИред
logger.spec('event-processed'); //only test env
тАж
logger.spec('event-fetched'); //only test env
рдЪрд▓ рд░рд╣реЗ рдкрд░реАрдХреНрд╖рдг:
1. config / settings.test.js рдХреЙрдкреА рдХрд░реЗрдВ -> config / settings.js рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдореЗрдВ рдмрджрд▓реЗрдВ;
2. рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд░рдВрдн: APP_ENV = рдкрд░реАрдХреНрд╖рдг npm рдкреНрд░рд╛рд░рдВрдн
3. рдЪрд▓ рд░рд╣реЗ рдкрд░реАрдХреНрд╖рдг: APP_ENV = рдкрд░реАрдХреНрд╖рдг рдкреНрд░рддрд┐рдЬреНрдЮрд╛ --spec рдкрд░реАрдХреНрд╖рдг / рд╡рд┐рд▓рдВрдмрд┐рдд-рдЕрдиреБрд░реЛрдз-test.js
рдЯреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг (рдорд╛рдгрд┐рдХ)
require 'uri'
require 'net/http'
api_url = "http://127.0.0.1:8000/send_delayed"
url = "http://127.0.0.1:8000/health"
recheck_url = "http://127.0.0.1:8000/recheck_url_correct"
# recheck_url = "http://127.0.0.1:8000/recheck_url_error"
uid=rand(1000)
type="test_common"
delay=1
post_url = URI.parse(api_url)
# res = Net::HTTP.post_form(post_url,{"url" => url, "delay" => delay,
# "uid" => uid, "type" => type, "recheck_url" => recheck_url, "send_than_online" => true})
res = Net::HTTP.post_form(post_url,{"url" => url, "delay" => delay,
"uid" => uid, "type" => type, "recheck_url" => recheck_url})
p res.inspect
рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ

рд╕рд░реНрд╡рд░ рд╕реНрд░реЛрдд рдХреЛрдб
рдкрд┐рдВрдХреА рджреНрд╡рд╛рд░рд╛ рд╕рд╣-рд▓рд┐рдЦрд┐рдд
https://github.com/catz/actual_queue