рдПрд░рд╛рдВрдЧ рдкрд░ рдХреЙрдореЗрдЯ рд╕рд░реНрд╡рд░

рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЦ рдЕрднреА рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ erlang рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП: рдХреИрд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдзреВрдордХреЗрддреБ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

рдпрд╣рд╛рдВ рддреИрдпрд╛рд░ рдХреЛрдб: github.com/maxlapshin/comet

рд╡рд┐рд╡рд░рдг



рдзреВрдордХреЗрддреБ рд╕рд░реНрд╡рд░ рдХреЛ рдХрд╛рдЙрдмреЙрдп, рдЯрд┐рдирд┐рдЕрдо рдФрд░ рдЬреИрдмрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рд▓реЗрдЦ рд╕реНрд╡рдпрдВ рдХреЛрдб рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЧреАрддрд╛ рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рддрд░реНрдХ рдпрд╣ рд╣реИ: рд╣рдо HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред



Erlang рджреЛ рдЪреАрдЬреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ:
1) рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛
2) рдЕрдиреБрддреНрддрд░рд┐рдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд╕реНрддреЗ рдореЗрдВ рд▓рд╛рдЦреЛрдВ (!) рд░рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдЕрд░реНрдерд╛рддреНред рдХреНрд▓рд╛рдЗрдВрдЯ рдЦрдбрд╝рд╛ рд╣реИ, рдПрдХ рдЙрддреНрддрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╕рд░реНрд╡рд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдЧрд╛ред

рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдВрджрд░рд┐рдпрд╛рдВ



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рд░ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: rebar, рдирд┐рд░реНрднрд░рддрд╛ред

mkdir comet cd comet git init wget https://github.com/basho/rebar/wiki/rebar chmod +x rebar 


рдЕрдЧрд▓рд╛, рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП rebar.config рдмрдирд╛рдПрдБред

 {lib_dirs, ["apps", "deps"]}. {sub_dirs, [ "apps/comet" ]}. {erl_opts, [ debug_info, warn_format, warn_export_vars, warn_obsolete_guard, warn_bif_clash ]}. {deps, [ {cowboy, "0.6.*", {git, "git://github.com/extend/cowboy.git", {tag, "0.6.1"}}}, {tinymq, ".*", {git, "git://github.com/evanmiller/tinymq.git", "386813add4"}} ]}. 


рдЯрд┐рдирд┐рдЕрдо рдореЗрдВ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрди рдХреЗ рджреМрд░рд╛рди, рдПрдкреАрдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЧрдП рдереЗред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдХреЛ рд▓реЙрдХ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ!

рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛:
 ./rebar get-deps 


рддреБрд░рдВрдд рдПрдХ Emakefile рдмрдирд╛рдПрдБред рдХрдИ рд▓реЛрдЧ рдИрдореЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реВрдВред

 {"apps/comet/src/*", [debug_info, {outdir, "apps/comet/ebin"}, {i, "apps/comet/src"}]}. {"deps/cowboy/src/*", [debug_info, {outdir, "deps/cowboy/ebin"}, {i, "deps/cowboy/src"}]}. {"deps/tinymq/src/*", [debug_info, {outdir, "deps/tinymq/ebin"}, {i, "deps/tinymq/src"}]}. 


рдЕрдм рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд░реАрдврд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛ред

 mkdir -p apps/comet cd apps/comet ../../rebar create-app appid=comet cd - 


.Signignore рдореЗрдВ deps рдФрд░ ebin рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЬреЛ рд╣реБрдЖ рдЙрд╕рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░реЗрдВ:

 ./rebar compile 


рдкрд▓ рдХреЛ v1 рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓рд╛рдВрдЪ



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

рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рд░рди рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдХрдлрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ:

 ERL_LIBS=apps:deps erl +K true -name comet@127.0.0.1 -boot start_sasl -s comet_app -sasl errlog_type error 


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдПрд░реНрд▓реИрдВрдЧ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рднреА рдмрд┐рд▓рд┐рдпрд░реНрдбреНрд╕, рдЬреЛ рдХрдИ рдЪреМрдЦрдЯреЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореВрд░реНрдЦ рд╣реИрдВ, рдЧрд╛рдпрдм рд╣реИред

рдЕрдм рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХред

ERL_LIBS=apps:deps рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Erlang рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдореЗрдВ рдИрдмрд┐рди рд╣реИред

+K true рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ epoll / kqueue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

-name comet@127.0.0.1 - рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд▓рдВрдмрд╛ рдирд╛рдо

-boot start_sasl - рдпрд╛рдж рд░рдЦреЗрдВ рдФрд░ рджреЛрд╣рд░рд╛рдПрдВ

-s comet_app - рдзреВрдордХреЗрддреБ_рдкреНрдк рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн / 0 рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рдПрдВ (рдлрд┐рд▓рд╣рд╛рд▓ рдпрд╣ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ)

-sasl errlog_type error рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рдмреИрд░рд╛рдЬ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

рдЕрдм, рд╕рдм рдХреБрдЫ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рд╛рд░рдВрдн / 0 рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдзреВрдордХреЗрддреБ_рд░реЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 -export([start/0]). start() -> application:start(comet). 


рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕рдм рдХреБрдЫ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 > ./rebar compile > make run ERL_LIBS=apps:deps erl +K true -name comet@127.0.0.1 -boot start_sasl -s comet_app -sasl errlog_type error Erlang R15B (erts-5.9) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:true] Eshell V5.9 (abort with ^G) (comet@127.0.0.1)1> 


рдпрд╛рдиреА рд╣рдорд╛рд░рд╛ рдЦрд╛рд▓реА рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ Ctrl + c рдпрд╛ рдкрдбрд╝рд╛рд╡ () рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓реЗрдВред рдХрдВрд╕реЛрд▓ рдореЗрдВред

V2 рдЯреИрдЧ

рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ



рд╣рдордиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЪрд▓реЛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ, рд╣рдо рдХрдИ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдЙрдмреЙрдп рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдПрдХ рдФрд░ mimetypes рдПрдкреНрд▓рд┐рдХреЗрд╢рди (https://github.com/spawngrid/mimetypes) рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рд▓рд╛рдЗрди {mimetypes, ".*", {git, "git://github.com/spawngrid/mimetypes.git"}} //github.com/spawngrid/mimetypes.git {mimetypes, ".*", {git, "git://github.com/spawngrid/mimetypes.git"}} рдХреЛ rebar.config рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдЦреАрдВрдЪреЗрдВ: ./rebar get-deps

рд╣рдо рдзреВрдордХреЗрддреБ_app.erl рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ , www / index.html рдореЗрдВ рдиреНрдпреВрдирддрдо рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рд░рди рдмрдирд╛рдПрдВ рдФрд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдЬрд╛рдПрдВ : 8080 /

рдЯреИрдЧ v3

рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦреЗрдВ



Jquery, form рдФрд░ url / sendmessage рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ sendmessage_handler рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ

рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рдпрдВ рдЪрд░рд╡рд╛рд╣реЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

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

рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЬрд░реВрд░реА рд╣реИ рдХрд┐ Emakefile рдХреНрдпреЛрдВред рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЛрдб рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдирд┐рдпрдорд┐рдд make:all([load]). рдкрд╕рдВрдж рд╣реИ make:all([load]).

рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд░реАрд▓реЛрдбрд░ рдпрд╛ рд╕рд┐рдВрдХ рд╣реИрдВред рдЙрди рд╕рднреА рдХреЛ рдмреБрд░рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╢реИрддрд╛рди рдХреЛ рдХрдм, рдФрд░ рдХреНрдпрд╛ рдирд░рдХ рдореЗрдВ рдХреЛрдб рдХрд░рддреЗ рд╣реИрдВред ssl рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдХреНрд░рд╕реНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрд╢реАрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ: рд╕рднреА ([рд▓реЛрдб])ред (рдпрд╣ рдХрдорд╛рдВрдб рдПрд░реНрд▓рд╛рдВрдЧ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП) рдФрд░ Emakefile рдХрд┐рдпрд╛

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рд╣рдо рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдзреВрдордХреЗрддреБ_рд╕реБрдкрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

рдЕрдм рдЖрдк рд╕реАрдзреЗ рдзреВрдордХреЗрддреБ рддрд░реНрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

  {Post, Req2} = cowboy_http_req:body_qs(Req), {<<"body">>, Body} = lists:keyfind(<<"body">>, 1, Post), tinymq:push(<<"default_channel">>, Body), 


V4 рдЯреИрдЧ

рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдШрдЯрд╛рдПрдВ



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

рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдордиреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рд▓рд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдХреНрд░рдордмрджреНрдз рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯрд┐рдирд┐рдЕрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдзреВрдордХреЗрддреБ_рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдзреВрдордХреЗрддреБ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЪрд░рд╡рд╛рд╣рд╛ рдЪрд┐рдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред

1) рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ / рдзреВрдордХреЗрддреБ рдЖрддрд╛ рд╣реИ, рд╣рд╛рде рдкрд░ рдЖрдЦрд┐рд░реА рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реЛрдиреЗ рдпрд╛ рди рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг
2) рд╣реИрдВрдбрд▓рд░ рдиреЗ рдЯрд┐рдирд┐рдЕрдо рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХреА: рдкреЛрд▓ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдИ рдирдП рд╕рдВрджреЗрд╢ рд╣реИрдВред
3) рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рдпрд╣ рд╕рдВрднрд╛рд▓ / 2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рд░рд▓ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ
4) рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдИ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЯрд┐рдирд┐рдореНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ: рдПрдХ рд▓реВрдк / 3 рдЪрдХреНрд░ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ рд▓рдЯрдХрд╛рдПрдВ
5) рдЬрдм рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрджреЗрд╢ рдЖрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ JSON рдореЗрдВ рдкреИрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдирдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд╕рд╛рде рднреЗрдЬрддрд╛ рд╣реИ

Json рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП mochijson2 рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

V5 рдЯреИрдЧ

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ HTML рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рд╢реЗрд╖ рд╣реИред

рдзреВрдордХреЗрддреБ рдХреЗ рд▓рд┐рдП HTML



рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рддреЗ рд╣реИрдВ: рд╕рд░реНрд╡рд░ рдХреЛ рдмрд╣реБрдд рдмрд╛рд░-рдмрд╛рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдирд╣реАрдВред рдпрд╛рдиреА рдПрдХ рдЖрдкрд╛рддрдХрд╛рд▓реАрди рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХреЗ рдмрд╛рдж, рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рд╣рдо рдмрд╛рдж рдореЗрдВ рдпрд╣ рд╕рдм рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдкрд╣рд▓реЗ рд╕рд┐рд░реНрдл рдзреВрдордХреЗрддреБ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВред

V6 рдЯреИрдЧ

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рддреЛ, рдорд╕реМрджреЗ рдореЗрдВ, рдПрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдзреВрдордХреЗрддреБ рдХрд╛ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рддреИрдпрд╛рд░ рд╣реИред рдЗрд╕ рд░реВрдк рдореЗрдВ, рдЖрдк рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд╕рдХрддреЗ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
1) рдкреНрд░рд╛рдзрд┐рдХрд░рдг
2) рдЪреИрдирд▓ рд╕рдВрдХреЗрдд

рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдХреЛрдб рдХреЛ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд░реЛрд▓ рдЖрдЙрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдПрд░рд▓рд╛рдВрдЧ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд▓рдбрд╝рд╛рдИ рдореЗрдВ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕, рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рд▓реЙрдиреНрдЪ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

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


All Articles