рдкрд░рд┐рдЪрдп
рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП
Node.js рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ
рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
Now.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ
рд╣реБрдП , рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред
рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ
Now.js - рд╕реЙрдХреЗрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ Node.js рдореЙрдбреНрдпреВрд▓, рдЬреЛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░, рдЖрдк рди рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рдЭрд╛ рдЪрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕ рдиреНрдпреВрдирддрдо рдХреЛрдб рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджреВрд░рд╕реНрде рдХреЙрд▓ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб
rpc = require " now "
rpc_channel = rpc . initialize httpServer
rpc_channel . now . myVariable = " some value "
rpc_channel . now . distribute = ( message ) - >
rpc_channel . now . receive @now . name , message
FractalizeR's HabraSyntax Source Code Highlighter .
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
- рдЕрдм рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓
- рд╣рдо рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ Node.js рд╕рд░реНрд╡рд░ (http.Server) рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХрд░рдХреЗ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдирд▓ рдмрдирд╛рддреЗ рд╣реИрдВ
- рдкреНрд░рд╛рдкреНрдд рдЪреИрдирд▓ рдореЗрдВ рдЕрдм рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд░ myVariable рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
- рд╣рдо рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЕрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
- рд╡рд┐рддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ
рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ
console . log ( now . myVariable ) ;
now . receive = function ( message ) {
$ ( " #messages " ) . append ( " <br> " + message ) ;
}
$ ( " #send-button " ) . click ( function ( ) {
now . distribute ( $ ( " #text-input " ) . val ( ) ) ;
} ) ;
FractalizeR's HabraSyntax Source Code Highlighter .
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
- рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
- рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЕрдм рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ)
- рдХреБрдЫ рдЬрдЧрд╣ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдЯрди рдХреНрд▓рд┐рдХ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ), рд╣рдо рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ
Now.js рдФрд░ Kiss.js рдХреЗ рд╕рд╛рде рдПрдХ рдЪреИрдЯ рд▓реЗрдЦрди
рдирд┐рдпрдВрддреНрд░рдХ
kiss = require " kiss.js "
rpc = kiss . controllers . rpc
class MyController
@on_app_started = ( app ) - >
app . rpc_channel . now . distributeMessage = ( message ) - >
gr = rpc . getGroup @now . room
gr . removeUser @user . clientId
gr = rpc . getGroup @now . new_room
gr . addUser @user . clientId
@now . room = @now . new_room
gr . now . receiveMessage @now . name , message
@ index = ( req , res ) - >
context = { template_ name : " chat.html " }
v = new kiss . views . TextViewer ( )
v . render req , res , context
exports . MyController = MyController
FractalizeR's HabraSyntax Source Code Highlighter .
рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ, рд╣рдо рд╕рд┐рд░реНрдл рдПрдХ рдЪреИрдЯ рдкреЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд on_app_started рдореЗрдВ рд╣реЛрддреА рд╣реИред
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рд╣рдо рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрд╢рди рдореЗрдиреЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред рдЬрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ new_room рдХреЗ рдХрдорд░реЗ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред
рдЧреНрд░рд╛рд╣рдХ
$ ( document ) . ready ( function ( )
{
now . name = " user " ;
now . room = " room 1 " ;
function send ( )
{
now . name = $ ( ' <div/> ' ) . text ( $ ( " #username " ) . val ( ) ) . html ( ) ;
now . new_room = $ ( ' <div/> ' ) . text ( $ ( " #room " ) . val ( ) ) . html ( ) ;
var html = $ ( ' <div/> ' ) . text ( $ ( " #text-input " ) . val ( ) ) . html ( ) ;
now . distributeMessage ( html ) ;
$ ( " #text-input " ) . val ( " " ) ;
}
$ ( " #send-button " ) . click ( send ) ;
$ ( " #text-input " ) . keypress ( function ( e )
{
if ( e . keyCode = = 13 ) send ( ) ;
} ) ;
now . receiveMessage = function ( name , message )
{
$ ( " <li><h3> " + name + " </h3><p><strong> " + message + " </strong></p></li> " ) . prependTo ( " #messages " ) ;
$ ( ' #messages ' ) . listview ( ' refresh ' ) ;
}
} ) ;
FractalizeR's HabraSyntax Source Code Highlighter .
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдХрдорд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬрд┐рд╕реЗ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдирд╛рдо, рдХрдорд░рд╛ рдФрд░ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рднреА рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВред
рд╣рдо рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рд░реНрд╡рд░ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо
рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдПрдХ рд╣реА рдирд╛рдо рд╡рд╛рд▓реЗ рдХрдорд░реЗ рдореЗрдВ рд▓реЛрдЧ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВрдЧреЗ, рд╕рдВрджреЗрд╢ рдХрд╣реАрдВ рднреА рд╕рд╣реЗрдЬреЗ рдирд╣реАрдВ рдЧрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо Now.js рдХреЗ рд╕рд╛рде рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рд╕реЗ рдЪрд░ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдВрджрд░реНрдн
рдбреЗрдореЛрд╕реНрд░реЛрдд рдХреЛрдб рдЪреИрдЯ рдХрд░реЗрдВNow.jsSocket.ioKiss.js