
è¹ã«åŒ·ã颚ãå¹ããŸããã å°ããæ°Žãã¶ããšéšæ»Žã«ãããã¡ã¬ãã®äžã®ãããã«ã²ããåã£ãŠããªãé¡ãç®ã现ããŸããã å¯ãã ãã§ã¯ãããŸããã§ãããããããå Žæã«å¯ãã浞éããŸããã ãžã£ã±ããã®äžã«ãã³ãã 圌ã®æã¯éº»çºããè¡ãåã£ãã ããããè¹ä¹ãã¯å²¬ã®ã©ããã«éããªå³¶ããããæªå€©åãåŸ ã€ããšãã§ããããšãç¥ã£ãŠããŸããã
海岞ã¯æ¯ããä¹çµå¡ã«æšã®é³ãšreã®ããããã§åºäŒã£ãã 人ã ã¯ãäŒæ¯ããæŽã£ãŠãèŠçŽ ãšã®éããç¶ããæ¥ã1æ¥ãããªãããšãç¥ã£ãŠããŸããã
ãããããµãã€ãã«ã¿ã¹ã¯ãæ¬ ããæ²é»ãšèªç¶ãšã®äžèŽã®ãŸãã«ãã®ç¬éã«ãåå è ã®äžäººã§ãã人çã®ããã°ã©ããŒã®è³ã¯åŸ©geã®åé¡ãæ¢ãå§ããŸããã ããã¯èè ã®è³ã§ããã圌ã¯ãã®ã¢ã€ãã¢ãçã¿åºããŸãã...
ãŸããã
7ãããã®å¹³åé床ã§ã5æ¥éã§è¹äžã§æ¥œããããšãã§ããŸããã
ã¯ããã«
ããã°ã©ããŒã®è·æ¥äžã®å¹žçŠã¯éåžžã«ç°¡åã§ã-ããªãã®å¥œããªèšèªã§é¢çœãã¿ã¹ã¯ãæžããŠãããã®ããã«ãéãåãåãããšïŒã§ããã°å°ããã¯ãªãããåžžã«ãéã¯å°ãªããïŒã ãã®ãããªèŠæã¯ã SOA ïŒç¹ã«SOAP / WSDL / XML-RPC / JSON-RPCãªã©ïŒãRESTããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãªã©ãã¹ã¿ã³ãã¢ãã³ã¢ããªã±ãŒã·ã§ã³ãšãããã®éã®äº€æããã»ã¹ãšãã圢ã§ã¢ãããŒãå šäœãçãŸãããšããäºå®ã«ã€ãªãããŸããã äžçªäžã®è¡ã¯ãUnixã®ååã«åŸã£ãŠãåå¥ã®æ©èœãã¢ããªã±ãŒã·ã§ã³ã«å²ãåœãŠããããããã®éã®ããŒã¿äº€æãåå¥ã«æå®ããããšããããšã§ãã
ç§ã®è¶£å³ã®1ã€ã¯ãã¹ããŒãããŒã ãã³ã³ãã¥ãŒãã£ã³ã°ã·ã¹ãã ãããã³ãã®ä»ã®åæ§ã®ã¿ã¹ã¯ãªã©ãå°ããªã¢ãžã¥ãŒã«ã®åæ£ãããã¯ãŒã¯ã®äœæ¥ã«é¢é£ããŠããŸãã ãããã®éã®éä¿¡ã«ã¯ãäžå€®ã®ã¡ãã»ãŒãžãããŒã«ãŒã䜿çšãããšäŸ¿å©ã§ãã å žåçãªãœãªã¥ãŒã·ã§ã³ïŒ RabbitMQ ãRedisã ActiveMQããã³ãã®ä»ã®åæ§ã®ãœãªã¥ãŒã·ã§ã³ã æ¥çã®ã¢ã³ã¹ã¿ãŒã«ã¯ã IBM BrokerãIBM MQ ã Tibcoãªã©ããããŸãã
ããããç§ã¯ãããã«ã€ããŠå¥œãã§ã¯ãªãã£ããã®
æ¢åã®ãœãªã¥ãŒã·ã§ã³ã®èŽåœçãªæ¬ é¥
- Apache Active MQããã³ãã®ä»ã®JavaããŒã¹ã®ãããŒã«ãŒã éå§æã«å°ãªããšã100MB-æãã¯16GBã®RAMã§ãããããããŸãã ç§ã¯Javaã«å¯ŸããŠäœããããŸããããããã§ã...
- IBMãTibcoããã³ãã®ä»ã ããã¯ãããªã«ãéã«ãªãã ãã-ç§ã¯äœãä»ã®ãã®ã«ããã䜿ãã ããã
- Rabbit MQãRedis ã ããããæãæ£ããéžæè¢ã§ãããç§ã¯äŒæäžã§ããã€ãŸããããã¯ç§ãã¡ã®ããæ¹ã§ã¯ãããŸããã
éžæã¯ãã·ã³ãã«ã§ãããã³ã«ã«ãŒã¿ãŒã¡ãã»ãŒãžã䜿çšããããªãœãŒã¹æ¶è²»ã®å°ãªãããŠãããŒãµã«ã§é«éãªç¬èªã®å®è£ ã«åºã¥ããŠããŸãã
ã³ã³ããŒãã³ã
ã¡ãã»ãŒãžã³ã°ã容æã«ããããã®ZeroMQ圢åŒã®éä¿¡å±€ã
ããã°ã©ãã³ã°èšèªã«ã¯åé¡ããããŸãã JVMããŒã¹ã®PythonãRubyã¯ãä»®æ³ãã·ã³ã®ããã«äžæãããŠããŸããããã¯ãéå°ãªãªãœãŒã¹æ¶è²»ãæå³ããŸãã Rustã欲ããã£ãã®ã§ãããå®è£ ãéå§ããåŸãæšæºã©ã€ãã©ãªãããã«å®å®ãããŸã§åŸ ããªããã°ãªããªãããšã«æ°ä»ããŸããã Go-zmqã®ãã€ãã£ãå®è£ ãããã°çŽ æŽãããã§ãããã çµæã¯C ++ / Cã§ãã
äž»ãªå®è£
ãããŒã«ãŒã®æ§æã¯æ¬¡ã®ãšããã§ãã
- ãµãŒãã¹-èŠæ±ãžã®å¿çã¢ãŒãã§åäœããããŒãœãã©ã€ãºãããã¯ã©ã€ã¢ã³ãïŒZMQ_DEALERïŒ
- ã¯ã©ã€ã¢ã³ã-å¿åã¯ã©ã€ã¢ã³ãïŒZMQ_REQïŒããããŒã«ãŒãéããŠãµãŒãã¹ãžã®ãªã¯ãšã¹ããåŠçããå¿çãåŸ ã¡ãŸãã
ãããŒã«ãŒæ¥ç¶ãã€ã³ãã¯ãROUTERã¿ã€ãã®ãœã±ããã§ãã ïŒã¯ã©ã€ã¢ã³ãããïŒREQãœã±ããããããŒã¿ãåä¿¡ãããšãäžæã®ã¯ã©ã€ã¢ã³ãã³ãŒããå«ãã¡ãã»ãŒãžãçæãããŸãã 次ã«ããµãŒãã¹åã顧客çªå·ããã®ä»ã®ããŒã¿ã§æ§æããããµãŒãã¹ãžã®ãªã¯ãšã¹ãçšã®ããã±ãŒãžãäœæãããŸãã æŠç¥çã«ã¯ãããã¯æ¬¡ã®ããã«è¡šãããšãã§ããŸãã

ã³ãŒãã¯GitHubã§è¡šç€ºã§ããŸãã
äºæ¬¡å®è£
å®è£ ã¯éåžžã«åçŽã«èŠããŸããã åé¡ã®å¥ã®éšåãèŠã€ããŠè§£æ±ºããå¿ èŠããããŸããã
åãååã®è€æ°ã®ãµãŒãã¹ã€ã³ã¹ã¿ã³ã¹ã䜿çšããæ¹æ³
è² è·åæ£ãšèé害æ§ã«é©ããŠããŸãã
å®éãDEALER-to-ROUTERã¢ãŒãã§åãæ¥ç¶åã䜿çšãããšãæåŸã®æ¥ç¶ã®ã¿ã䜿çšãããŸãã
ãœãªã¥ãŒã·ã§ã³ã¯ããããŒã«ãŒã«æ¥ç¶ããDEALER-to-DEALERã¢ãŒãã§åå¥ã®æ¥ç¶ãã€ã³ããäœæãããµãŒãã¹ããšã«åå¥ã®ããŒããã©ã³ãµãŒã§ãã ãã®å ŽåããµãŒãã¹ã®å Žåãæ¥ç¶ã¢ãã¬ã¹ããããŒã«ãŒã§ã¯ãªããã©ã³ãµãŒã«å€æŽããã ãã§ååã§ãã
ãã©ã¡ãŒã¿
䜿çšæ³ïŒ waha-proxy-balance [-b <zmq bind>] [-v] -n <name> [-u <zmq bind>] [-] [-ããŒãžã§ã³] [-h] ã©ãã§ïŒ -b <zmq bind>ã-backend <zmq bind> ãããã·ã®ããã¯ãšã³ããã€ã³ãã£ã³ã° -vã-verbose ããå€ãã®åºåã衚瀺ãã -n <åå>ã-åå<åå> ïŒå¿ é ïŒãã©ã³ã·ã³ã°ãµãŒãã¹å -u <zmq bind>ã-url <zmq bind> ãããŒã«ãŒURL -ã-ignore_rest ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã -ããŒãžã§ã³ ããŒãžã§ã³æ å ±ã衚瀺ããŠçµäºããŸãã -hã-help 䜿çšæ å ±ã衚瀺ããŠçµäºããŸãã ãããŒã«ãŒæ®é«ã¢ãžã¥ãŒã«
ã³ãŒãã¯githubã«ãããŸã
HTTPçµç±ã§ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãæäŸããæ¹æ³ã¯ïŒ
å°ãªããšãã¹ããŒãããŒã¹ã¿ãŒãä»ããŠäœæ¥ããèœåãèããã°ãHTTPã€ã³ã¿ãŒãã§ãŒã¹ã«å¯Ÿãã人ã ã®å€§ããªãæãèããã°ãããã¯ç¡æå³ã§ã¯ãããŸãããæ£ããå®è¡ããå¿ èŠããããŸããjson/ãã¬ãŒã³åºåãGETããã³POSTãªã¯ãšã¹ãã®äž¡æ¹ã®ãµããŒãããã¹ãŠã®æ¶é²å£«ã®JSONPã§ãã
Pocoã©ã€ãã©ãªã䜿çšãããšãå¥ã®ããŒã¢ã³ãšããŠå®è£ ãããããšãããããŸããã
- GETèŠæ±ãŸãã¯POSTæ¬äœã®argsãã©ã¡ãŒã¿ãŒã«ã¯ãJSONé åãå«ãŸããŠããå¿ èŠããããŸãã
- ãªãã·ã§ã³ã®ã¿ã€ã ã¢ãŠããã©ã¡ãŒã¿ã¯ãããªç§åäœã®æ倧å¿çæéã§ãã
- ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒã¿ã€ã-æ»ãããŒã¿ã¿ã€ã-ãã¬ãŒã³ãŸãã¯json
- ãªãã·ã§ã³ã®jsonpãŸãã¯callabackãã©ã¡ãŒã¿ãŒ-JSON-Pãªã¯ãšã¹ãã®é¢æ°å
ãã©ã¡ãŒã¿
䜿çšæ³ïŒ waha-proxy-http [-t <ms>] [--threads <int>] [-p <int>] [-v] [-u <zmq bind>] [-] [--version] [-h] ã©ãã§ïŒ -t <ms>ã-timeout <ms> ãtimeoutããã©ã¡ãŒã¿ãªãã§ã¿ã€ã ã¢ãŠããèŠæ±ããŸãã -1-ç¡é倧 --threads <int> HTTPæ倧ã¹ã¬ãã -p <int>ã-port <int> HTTPãã€ã³ãã£ã³ã°ããŒã -vã-verbose ããå€ãã®åºåã衚瀺ãã -u <zmq bind>ã-url <zmq bind> ãããŒã«ãŒURL -ã-ignore_rest ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã -ããŒãžã§ã³ ããŒãžã§ã³æ å ±ã衚瀺ããŠçµäºããŸãã -hã-help 䜿çšæ å ±ã衚瀺ããŠçµäºããŸãã ãããŒã«ãŒHTTPãããã·ïŒRESTæ§ïŒã¢ãžã¥ãŒã«
ã³ãŒãã¯githubã«ãããŸã
ãªããã³ãªã®ã
ããŒã¹ã/ libeventãªã©ãããŠã¿ãŸãããïŒ Pocoã¯ã·ã¹ãã ã³ãŒã«ã«å¯Ÿããéåžžã«èãã©ãããŒã§ãããããè¿œå ã®ããã£ãããããªããæå°éã®åŽåãšåªããããã¥ã¡ã³ãã§çµã¿ç«ãŠãããŸãã ãããŠãããã¯ããŒã¹ããããã¯ããã«æ確ã ãšããããšã§ãã
åªãã管çè ãäœããããã°ã©ã ã«æ¶æ¥µçãªäººãäœãã«ã¯ã©ãããã°ããã§ããïŒ
ä»ã®ããã°ã©ã ãåŒã³åºããã¡ãã»ãŒãžãã£ãŒã«ããåŒæ°ãšããŠæž¡ããåºåãåçãšããŠè§£éããããŒã¢ã³ãäœæããŸãã ãã®ãããªCGIã«ãã£ãŠç°¡çŽ åãããŸãã
ãã©ã¡ãŒã¿
䜿çšæ³ïŒ waha-service-script [-s <ã¹ã¯ãªãã>] [--no-stdout] [-e] [-r] -n <åå> [-v] [-u <zmq bind>] [-] [--version] [-h] <string> ... ã©ãã§ïŒ -s <ã¹ã¯ãªãã>ã-ã¹ã¯ãªãã<ã¹ã¯ãªãã> ãã¹ã¯ãªãããã¢ãŒãã®ã¹ã¯ãªãããã¹ --no-stdout ã¡ãã»ãŒãžãšããŠstdoutã䜿çšããªãã§ãã ãã -eã-stderr ã¹ã¯ãªããã®æšæºãšã©ãŒåºåãè¿œå ãã -rã-ret-code ã¡ãã»ãŒãžã®æåŸã®ãã£ãŒã«ããšããŠã¹ã¯ãªããæ»ãã³ãŒããè¿œå -n <åå>ã-åå<åå> ïŒå¿ é ïŒãã©ã³ã·ã³ã°ãµãŒãã¹å -vã-verbose ããå€ãã®åºåã衚瀺ãã -u <zmq bind>ã-url <zmq bind> ãããŒã«ãŒURL -ã-ignore_rest ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã -ããŒãžã§ã³ ããŒãžã§ã³æ å ±ã衚瀺ããŠçµäºããŸãã -hã-help 䜿çšæ å ±ã衚瀺ããŠçµäºããŸãã <string>ïŒè€æ°ååãå ¥ããããŸãïŒ ã¹ã¯ãªããã®äºåå®çŸ©ãããåŒæ° ãããŒã«ãŒã¹ã¯ãªãããµãŒãã¹
ã³ãŒãã¯githubã«ãããŸã
ããã«æ¹åããæ¹æ³ã¯ïŒ
ã³ã³ãœãŒã«ãããã¹ãŠã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããŸãã ãã¬ãŒã³/ hex / base64 / jsonå ¥åºåã䜿çšã
ãã©ã¡ãŒã¿
䜿çšæ³ïŒ waha-cli [-t <ms>] -n <name> [-v] [-u <zmq bind>] [-p] [-e <plain | base64 | hex>] [--out-sep <char>] [-o <empty | plain | delimited | json>] [-d <plain | base64 | hex>] [--in-sep <char>] [-i <args |ãã¬ãŒã³|åºåã| json>] [-] [--version] [-h] <string> ... ã©ãã§ïŒ -t <ms>ã-timeout <ms> èŠæ±ã¿ã€ã ã¢ãŠãã -1-ç¡é倧 -n <åå>ã-åå<åå> ïŒå¿ é ïŒãªã¢ãŒããµãŒãã¹å -vã-verbose ããå€ãã®åºåã衚瀺ãã -u <zmq bind>ã-url <zmq bind> ãããŒã«ãŒURL -pã-pretty ãjsonãã®ããªãã®JSONåºå -e <ãã¬ãŒã³| base64 | hex>ã-encoder <ãã¬ãŒã³| base64 | hex> ãåºåããåºåã®åºåãšã³ã³ãŒã㌠--out-sep <char> åºåã»ãã¬ãŒã¿ãŒ -o <empty | plain | delimited | json>ã--output <empty | plain | delimited | json> CLIã¢ãŒãã®åºåã¢ãŒã -d <ãã¬ãŒã³| base64 | hex>ã-decoder <ãã¬ãŒã³| base64 | hex> ãåºåããå ¥åçšã®å ¥åãã³ãŒã㌠--in-sep <char> å ¥åã»ãã¬ãŒã¿ãŒ -i <args | plain | delimited | json>ã--input <args | plain | delimited | json> CLIã¢ãŒãã®å ¥åã¢ãŒã -ã-ignore_rest ãã®ãã©ã°ã«ç¶ãã©ãã«ä»ãåŒæ°ã®æ®ããç¡èŠããŸãã -ããŒãžã§ã³ ããŒãžã§ã³æ å ±ã衚瀺ããŠçµäºããŸãã -hã-help 䜿çšæ å ±ã衚瀺ããŠçµäºããŸãã <string>ïŒè€æ°ååãå ¥ããããŸãïŒ ãargsãå ¥åã®èŠæ±ã¡ãã»ãŒãžã®åŒæ° ZMQãããŒã«ãŒã³ã³ãœãŒã«ã¯ã©ã€ã¢ã³ãã€ã³ã¿ãŒãã§ã€ã¹
ããã®ã³ãŒãã¯githubã§ã
ãã¹ãŠã®çµã¿ç«ãŠ
GIT + CMake +ã¡ã€ã¯
git clone https://github.com/reddec/waha.git && cd waha && mkdir build && cd build cmake ../-DCMAKE_BUILD_TYPE =ãªãªãŒã¹ make && make package
Debiançšããã±ãŒãžã¯wahaã«ãããŸã-*ãDebãæ®ãã®waha-*ãZip
䜿çšäŸ
èªã¿èŸŒã¿ã®è² è·ã倧ãããæžã蟌ã¿ãå°ãªããŠãŒã¶ãŒã®æ¿èªã
ãããŒã«ãŒã®èµ·åïŒããã©ã«ãããŒãã¯10000ïŒ
$ã¯ããããŒã«ãŒ
èªã¿åãã®ããã®ãã©ã³ãµãŒã®éå§ïŒããã©ã«ãã§ã¯ãããŒã10001ïŒ
$ waha-proxy-balance -n system.user.check
httpasswdãèµ·åããŠããã°ã€ã³/ãã¹ã¯ãŒãã確èªããŸãïŒè² è·ãåæ£ããããã«å¿ èŠãªåæ°ã ãå®è¡ããŸãïŒã ã·ã£ããããŠã³ã³ãŒãã®ã¿ãè¿ããŸãã åŸã«æ¥ããã®ã¯ãã¹ãŠãåŒæ°ãšããŠã¹ã¯ãªããã«æž¡ãããŸãã
$ waha-service-script -u tcpïŒ//127.0.0.1ïŒ10001 -n system.user.check -s htpasswd --ret-code --no-stdout--bv users.passwd
åºåãšãšãã«ãŠãŒã¶ãŒãè¿œå ããããã®ã¹ã¯ãªãããå®è¡ããïŒãã©ã³ã¹ããšãããšãªãïŒ
$ waha-service-script -n system.user.add -s htpasswd --ret-code --stderr--b users.passwd
HTTPã€ã³ã¿ãŒãã§ãŒã¹ã®éå§ïŒããã©ã«ãã®ããŒã9001ïŒ
$ waha-proxy-http
ãªã¯ãšã¹ãäŸ
http://127.0.0.1:9001/system.user.check?args=["admin","admin "] http://127.0.0.1:9001/system.user.check?args=["admin","admin"â &callback=func123
ã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ã®äœ¿çš
ãã©ãŒããããªãã®åºåïŒ
$ waha-cli -n system.user.check admin admin
JSONã§ã®åºåïŒ
$ waha-cli -o json -n system.user.check admin admin
ãŸãšã
ã¬ãžã£ãŒããªã©ã¯ãŒãŒã·ã§ã³äžã«æ¥œããããã°ã©ããŒã«ãã£ãŠæžããããæ©èœããã¢ãžã¥ãŒã«åŒã®ã¡ãã»ãŒãžãããŒã«ãŒã ã³ãŒããæ¶ããªãããã«ãå ¬éããŸããã
ãããå¿ èŠãªå Žåã¯ããçžè«ãã ããã