рдирд╛рдо рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП AngularJS рд╕реЗрд╡рд╛ рдЕрд╡рдзрд╛рд░рдгрд╛

рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!

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




socket.io рдирд╛рдорд╕реНрдерд╛рди

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдкреБрд╕реНрддрдХрд╛рд▓рдп рддрдерд╛рдХрдерд┐рдд рдирд╛рдорд╕реНрдерд╛рди рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╣реА рднреМрддрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рднреАрддрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдк рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рд╕реЗ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

var channelMessages = io.connect('http://localhost:3000/messages'), channelMessages.on('message received', function() { /* notify about new message */ }); // ... channelCommands = io.connect('http://localhost:3000/commands'); channelCommands.emit('init'); channelCommands.on('command received', function() { /* process new command */ }); 

рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ io.connect рдХреЙрд▓ рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ on рдФрд░ io.connect emit ред рдпрд╣ рдРрд╕реЗ рдХрдиреЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬреЛ рдореИрдВ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ AngularJS рд╕реЗрд╡рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

AngularJS рд╕реЗрд╡рд╛ рд╕реЙрдХреЗрдЯ v.1

рдХрдИ рдирд╛рдорд┐рдд рд╕реЙрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд╕рдордп, рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реЗрд╡рд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдХреА рддрд░рд╣ рдХреБрдЫ рджреЗрдЦрд╛ рдЧрдпрд╛ред

 app.factory('socket', function ($rootScope) { var socket = io.connect(); return { on: function (eventName, callback) { socket.on(eventName, function () { var args = arguments; $rootScope.$apply(function () { apply(socket, args); }); }); }, emit: function (eventName, data, callback) { socket.emit(eventName, data, function () { var args = arguments; $rootScope.$apply(function () { if (callback) { callback.apply(socket, args); } }); }) } }; }); 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдЖрджрд┐рдо рдЖрд╡рд░рдг рд╣реИ рдЬрд┐рд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ / рдкреБрд╖реНрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рд╕рднреА рд╕реНрдХреИрдк рдХреЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рдФрд░ emit рд╣реЛрддрд╛ рд╣реИред рд╕реЗрд╡рд╛ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдПрдХ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ (рдЪреВрдВрдХрд┐ рд╕реЗрд╡рд╛рдУрдВ рдХреА "рд╕рд┐рдВрдЧрд▓рдЯрди" рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AngularJS рдПрдХ рдмрд╛рд░ factory рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)ред

рддреНрдпрд╛рдЧ
рд╣рд░ рдЫреАрдВрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрдХреЛрдк рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдкрдХреЛ $apply() рд╕реЗ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЕрдкрдорд╛рдирдЬрдирдХ рд╣реИред

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

AngularJS рд╕реЗрд╡рд╛ рд╕реЙрдХреЗрдЯ v.2

рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЗ рдЖрд╕рдкрд╛рд╕, рдХреБрдЫ рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдЕрд╕рдВрдЧрддрд┐ рдЖ рдЧрдИ рд╣реИред рдХрдИ рдирд╛рдорд┐рдд рдХрдиреЗрдХреНрд╢рди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдореЗрдВ рд╕реЗрд╡рд╛ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ рдПрдВрдЧреБрд▓рд░рдЬреЗрдПрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдХреБрдЫ рд╕рдорд╛рди рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдХрдо рд╕реЗ рдХрдо 3 рддрд░реАрдХреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ module.service рд╣реИред module.service , рдЬрд┐рд╕реЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдорд╛рдВрдЧ рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ module.factory , рдЬреЛ рд╕реЗрд╡рд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рд╕рдмрд╕реЗ рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ рд╣реИ module.provider ред рдирд╛рдо рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рджрд╛рддрд╛ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдирд╛рдорд┐рдд рдХреЛрдб /foo рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ socketsProvider.get('foo') рдЬреИрд╕реЗ рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, module.provider рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕реЗрд╡рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдкреНрд░рджрд╛рддрд╛ рдкрд░, рдмрд▓реНрдХрд┐ рд╕реАрдзреЗ, рд╕реЗрд╡рд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рдердо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ namespace рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдХрд░ рд╕реЙрдХреЗрдЯ рд╕реЗрд╡рд╛ рдХреЗ on рдФрд░ emit рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдФрд░ рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрджрд░ рдЖрд▓рд╕реА рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рдкреВрд▓ рд░рдЦрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ on рдпрд╛ emit , рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рджрд┐рдП рдЧрдП рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдПрдХ рдирдпрд╛ рдмрдирд╛рдПрдВред рдФрд░ рдирд╛рдорд┐рдд рдХрдиреЗрдХреНрд╢рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП, рд╣рд▓реНрдХреЗ рд╕реЗрд╡рд╛рдУрдВ socketFoo , socketBar , рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдЙрдирдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдиреЗ рдФрд░ emit рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП socket.on рдФрд░ socket.emit рдХрд░рдирд╛, рдирд╛рдо рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ 'рдлреВ' рдФрд░ 'рдмрд╛рд░' рдХреЗ рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░рдирд╛ред рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╕рдорд╛рдзрд╛рди, рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рдХреЗ рд╕рд╛рде - рд╕реЙрдХреЗрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп, socketFoo рдФрд░ socketBar рд╕реЗрд╡рд╛ рдЧреНрд░рд╛рд╣рдХ рдореМрдЬреВрджрд╛ socketFoo рдФрд░ socketBar рд╕реЗрд╡рд╛ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдирдП рд╕реЙрдХреЗрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреЛ рд▓реБрдЯрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдпрд╛рдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдХрд┐ рдХреЛрдИ рднреА рд╡рд╕реНрддреБ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдлрдВрдХреНрд╢рди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЕрдВрдЧрд░реЗрдЬреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИ! рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреИрдЯрд░реНрди рдирд┐рдореНрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 var module = angular.module('myApp.services', []); app.factory('MyService', function() { function MyService(options) { /*    */ } MyService.prototype.baz = function() { /* ... */ }; MyService.prototype.qux = function() { /* ... */ }; return MyService; }); // ... module.factory('clientService', function(MyService) { var myService = new MyService({foo: 1, bar: 42}); myService.qux(); // return ... }); 

рди рдХреЗрд╡рд▓ рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдирд╛рдордХрд░рдг рдХрд╛ рддрд░реАрдХрд╛ рднреА рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдкрд╛рд░рдВрдкрд░рд┐рдХ camelCase рдмрдЬрд╛рдп (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ), CamelCase рдЙрдкрдпреЛрдЧ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реЗрд╡рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, Socket рд╕реЗрд╡рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

Socket.js
 var services = angular.module('myApp.services', []); services.factory('Socket', ['$rootScope', function($rootScope) { var connections = {}; //  ,       function getConnection(channel) { if (!connections[channel]) { connections[channel] = io.connect('http://localhost:3000/' + channel); } return connections[channel]; } //    ,   namespace-  . function Socket(namespace) { this.namespace = namespace; } Socket.prototype.on = function(eventName, callback) { var con = getConnection(this.namespace), self = this; //      con.on(eventName, function() { var args = arguments; $rootScope.$apply(function() { callback.apply(con, args); }); }); }; Socket.prototype.emit = function(eventName, data, callback) { var con = getConnection(this.namespace); //     . con.emit(eventName, data, function() { var args = arguments; $rootScope.$apply(function() { if (callback) { callback.apply(con, args); } }); }) }; return Socket; }]); 


рдирд╛рдорд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬрд┐рд╕ рдкрд░ рдЧреНрд░рд╛рд╣рдХ рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

Examples.js
 var services = angular.module('myApp.services.channels', []); //  . services.factory('channelFoo', function(Socket) { return new Socket('foo'); }); //    . services.factory('channelBar', function(Socket) { function ChannelBar() { this.namespace = 'bar'; } ChannelBar.prototype = angular.extend(Socket.prototype, {}); ChannelBar.prototype.start = function() { this.emit('start'); }; ChannelBar.prototype.exit = function() { this.emit('exit'); }; return new ChannelBar(); }); 


рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдЪреИрдирд▓ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ, рдФрд░ socket.on рдФрд░ socket.emit рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдХрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖

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

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


All Articles