рджреЛрд╕реНрддреЛ рд╣рд░рдХреВ, рдХреНрд░реИрдХреЗрди.рдЬреЗ рдФрд░ рд╕реЙрдХрдЬ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдиреЛрдЯ

рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдЕрдЧрд▓реЗ "рд╣реЛрдо" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдирдП рдЯреВрд▓ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рдореИрдВ рдХреНрд░реИрдХреЗрди.рдЬреЗрдПрд╕ - рдкреЗрдкрд╛рд▓ рд╕реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкрд╛рд░ рдЖрдпрд╛ред Kraken.js рдПрдХ рдЕрдиреНрдп рдПрдХреНрд╕рдкреНрд░реЗрд╕-рдЖрдзрд╛рд░рд┐рдд Node.js рдврд╛рдВрдЪрд╛ рд╣реИред рд╣реЗрдмрд░ рдкрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╕рднреА рдЦрд╛рддреЛрдВ рд╕реЗ, рдХреБрдЫ рднреАред рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВ ред

рдпрд╣ рдореБрдЭреЗ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдкреНрд░рд╕рд┐рджреНрдз рдбрд░реНрдмреА.рдЬреИрд╕ , рдЙрд▓реНрдХрд╛.рдЬреЗрдПрд╕ , рд╕реЗрд▓реНрд╕.рдЬреЗрдПрд╕ , рдЖрджрд┐ рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реИ?

рдФрд░ рдореИрдВрдиреЗ рдЙрд╕реЗ рдкрд╕рдВрдж рдХрд┐рдпрд╛, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреЗрд╡рд▓рдкрд░ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ, рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХреЛрдВ, ...) рдкрд░ рдмрд╣реБрдд рд╕рдЦреНрдд рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рдПрдорд╡реАрд╕реА рдореЙрдбрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреА рд╕рднреА рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдм рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рд╣реИ, рдФрд░ рддреБрд░рдВрдд рдореИрдВ "рдореЗрд░реА рднреЗрдбрд╝" рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ред

рддреЛ, рдпрд╣ рдХрд╛рдо рд╣реЗрд░реЛрдХреВ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХреНрд░реИрдХреЗрди.рдЬреЗрдПрд╕ рдЖрд╡реЗрджрди рдХреЛ рднрд░рдирд╛ рд╣реИ, рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рдФрд░, рдорд┐рдард╛рдИ, рд╕реНрдХреНрд░реВрдЬрд╝ рдХреЗ рд▓рд┐рдПред

рдореИрдВ рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдЙрдмрдВрдЯреВ 13.10 рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рдорддрднреЗрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, heroku.com рдкрд░ рдЬрд╛рдПрдВ , рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ Heroku Toolbelt - Heroku рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ:
$ heroku login 

рдЕрдм рд╣рдо рд╣рд░реЛрдХреВ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЕрдЧрд▓рд╛ рдХрджрдо рдХреНрд░реИрдХреЗрди.рдЬреИрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
 $ sudo npm install -g generator-kraken 

рдлрд┐рд░ рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрдорд╛рдВрдб $ yo kraken рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЬрдирд░реЗрдЯрд░ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ:
      , '' ''ред
     / _ _ \ _
     | (@) (@) |  рдХреНрд░реИрдХреЗрди рдЬрд╛рд░реА рдХрд░реЗрдВ!
     ) __ (
    /, ')) (`редред)
   (((())))
    `\ _) ('/'

 [?] рдЖрд╡реЗрджрди рдХрд╛ рдирд╛рдо: рдХреНрд░реИрдХрди-рд╕реЙрдХреЗрдЯреНрд╕
 [?] рд╡рд┐рд╡рд░рдг: рдПрдХ рдкрд░реАрдХреНрд╖рдг kraken рдЖрд╡реЗрджрди socks.js рдХреЗ рд╕рд╛рде
 [?] рд▓реЗрдЦрдХ: <рдЖрдкрдХрд╛ рдирд╛рдо>
 [?] рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?  (Y / n) рдПрди

рдЬрдирд░реЗрдЯрд░ рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдХреНрд░реИрдХреЗрди.рдЬреЗрдПрд╕ рдХреА рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдирд╛рдо рдХреА рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдИред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 /config        json /controllers      /lib        /locales   /models  /public Web-,  /public/templates    /tests   - index.js     () 

рд╣рдо npm start рдХрдорд╛рдВрдб рдФрд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ: 8000 рд╣рдо рд╡рд░реНрдХрд┐рдВрдЧ рдХреНрд░реИрдХрди.рдЬреЗрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рдЕрдм рдЗрд╕реЗ рд╣рд░реНрдХреЛ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА package.json Procfile рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЕрдм рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ Procfile рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 web: node index.js 

рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╣рд░реНрдХреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд░реЛрдХреВ рдХреЛ PORT рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо json configs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, Kraken.js рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡рд┐рдзрд┐ index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИред рд╣рдореЗрдВ рдЗрд╕реЗ рдирд┐рдореНрди рд░реВрдк рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
 app.configure = function configure(nconf, next) { // Async method run on startup. nconf.set('port', Number(process.env.PORT || 5000)); next(null); }; 

рдареАрдХ рд╣реИ, рдЕрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдПрдВ:
 $ git init $ git add . $ git commit -m "init" 

рдФрд░ рдХрд░реЗрдВ:
 $ heroku create kraken-test-socksjs 

рд╣рд░реЛрдХреВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдЧрд╛, рдЬреЛ kraken-test-socksjs.herokuapp.com рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рддреБрд░рдВрдд рд╣рдореЗрдВ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
 $ git push heroku master 

рд╣рдо kraken-test-socksjs.herokuapp.com рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЦреБрд╢реА рдордирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рдордд рдХрд░реЛ; рдмрд╣реБрдд рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдмрджреНрдз (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдкреГрд╖реНрда рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝реЗрдВ) рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рдореБрдЭреЗ рд▓реЙрдЧ рджреЗрдЦрдиреЗ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рд▓рдЧ рдЧрдП ( $ heroku logs ) рдФрд░ $ heroku logs ред рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рдирд┐рдХрд▓рд╛ред рд╣рд░реЛрдХреВ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдЦреЛ рджреЗрддрд╛ рд╣реИ (рдЖрд╡реЗрджрди рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ - рдпрд╣ рднрдпрд╛рдирдХ рд▓рдЧрддрд╛ рд╣реИ, рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛: рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ formidable рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЦреЛ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ kraken-js рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред рдФрд░ рд╡рд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЧреНрд░рдВрдЯ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХрдо, рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕, рдЖрджрд┐ рдХрд╛ рд╕рдВрдХрд▓рди)ред

рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ: package.json рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдо рд╕рднреА dependencies рд▓рд┐рдП dependencies рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд devDependencies рдФрд░ dependencies рд▓рд┐рдП "grunt-cli": "~0.1.13" devDependencies "grunt-cli": "~0.1.13" рдореЙрдбреНрдпреВрд▓ "grunt-cli": "~0.1.13" ред рдпрд╣ рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЧреНрд░рдВрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж, package.json рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝реЙрд░реНрдо рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
 { "name": "kraken-sockets", "version": "0.1.0", "description": "", "author": "Your Name", "main": "index.js", "scripts": { "test": "grunt test", "start": "node index.js", "postinstall": "./node_modules/grunt-cli/bin/grunt build --force" }, "engines": { "node": ">=0.10.0" }, "dependencies": { "kraken-js": "~0.7.0", "express": "~3.4.4", "adaro": "~0.1.x", "nconf": "~0.6.8", "less": "~1.6.1", "dustjs-linkedin": "~2.0.3", "dustjs-helpers": "~1.1.1", "makara": "~0.3.0", "mocha": "~1.17.0", "supertest": "~0.8.2", "grunt": "~0.4.1", "grunt-cli": "~0.1.13", "grunt-contrib-less": "~0.9.0", "grunt-dustjs": "~1.2.0", "grunt-contrib-clean": "~0.5.0", "grunt-contrib-jshint": "~0.6.4", "grunt-mocha-cli": "~1.5.0", "grunt-copy-to": "0.0.10" }, "devDependencies": { } } 

"postinstall" рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬреЛ рд╕рд┐рд░реНрдл рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╕рдВрд╕рд╛рдзрди рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрд╛ рдЧрдпрд╛, рдФрд░ рд▓рд╛рдкрддрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирдП рд╣рд░реЛрдХреВ рдореЙрдбреНрдпреВрд▓ рдХреИрд╢рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдмрдЧ рд╣реИред рдореИрдВ рджреВрд╕рд░реЗ рджрд┐рди рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдЯрд┐рдХрдЯ рд▓рд┐рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рд╣рд░рдХреЛ-рд░реЗрдкреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдкреНрд░рддреНрдпреЗрдХ "рдкреБрд╢" рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреИрд╢ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реВрдВ:
 $ heroku repo:purge_cache -a kraken-test-socksjs 

рд╡рд╛рд╣, рд╣рд░реЛрдХреВ рдФрд░ рдХреНрд░реИрдХреЗрди рдХреА рдорд┐рддреНрд░рддрд╛ред рдЕрдм, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ: рдХреНрд░реЙрдХреЗрди рдХреЛ Sockjs рдкреЗрдВрдЪред

Sockjs рдХреЛ рдПрдХ npm рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЬрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдПрдХ рдЬрд┐рд╕реЗ http рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ express.js рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рддреЛ Kraken.js рдореЗрдВ рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди, рдХреНрд░реИрдХрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рддрд▓реНрд▓реАрди, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рдПред рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рддреИрдпрд╛рд░ рдХреЛрдб рджреВрдВрдЧрд╛ рдЬреЛ рдЗрд╕ рдЦрдВрдб рдХреЗ рд╕реНрдерд╛рди рдкрд░ index.js рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
 kraken.create(app).listen(function (err) { if (err) { console.error(err.stack); } }); 

рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ:
 var k = kraken.create(app); k.listen(function (err) { if (err) { console.error(err.stack); } else { var http = k.app.get('kraken:server'); var sockjs_opts = {sockjs_url: 'http://cdn.sockjs.org/sockjs-0.3.min.js'}; var sockjs_echo = sockjs.createServer(sockjs_opts); sockjs_echo.on('connection', function(conn) { hub.sockjs_pool.push(conn); conn.on('data', function(message) { hub.sockjs_pool.forEach(function(con) { con.write(message); }); }); }); sockjs_echo.installHandlers(http, {prefix:'/echo'}); } }); 

рдЗрд╕ рдкрд░ рдореИрдВ рдЪрдХреНрдХрд░ рдХрд╛рдЯрддрд╛ рд╣реВрдВред рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдХреЛ рдЬреАрдердм рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддреИрдирд╛рдд рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реИрдВ ред

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

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


All Articles