socket.io v.1.4.5 w expressãã»ããã¢ããããŸããããã¯ã©ã€ã¢ã³ãã§èª¬æã§ããªãåæã®çç±ã远跡ã§ããŸããã§ããã ã¯ã©ã€ã¢ã³ãã®åæã€ãã³ãã«ãã£ãŠäžããããçç±ã¯ãããã©ã³ã¹ããŒãã¯ããŒãºãã§ãã äžéšã®ã¯ã©ã€ã¢ã³ãã§ã¯éåžžã«äžè²«ããŠçºçããŸãã
ã¯ã©ã€ã¢ã³ããæéééã®ããã«èŠãããšãã«ããã©ã³ã¹ããŒãã¯ããŒãºãåæãååŸããããšã«ã€ããŠã®èª¬æã¯ãããŸããïŒ ã¯ã©ã€ã¢ã³ãã¯æ£åžžã«åæ¥ç¶ããŸãããé »ç¹ã«çºçãããããéåžžã«äžäŸ¿ã§ãã
pingIntervalãpingTimeoutãWebSocketã®ããŒãã®å€æŽãªã©ãããŸããŸãªèšå®ãè©ŠããŸããïŒçŸåšã¯ããŒã80ã䜿çšããŠããŸãïŒã ããããç§ãäœãããŠããããã«èŠããŠããåé¡ã¯æ±ºããŠæ¶ããŸããã
socket.iov2.0.3ã«æŽæ°ãããŸããã ãŸã åé¡ããããŸãã ããã¯ç§ã®PCã®1ã€ã§ã®ã¿çºçããããã§ãã Windowsãã¡ã€ã¢ãŠã©ãŒã«ãç¡å¹ã«ããŸããããåé¡ã¯åŒãç¶ãçºçããŸãã
倧èŠæš¡ãªæžãæãã䌎ãwsïŒhttps://github.com/websockets/wsïŒã«åãæ¿ããŸããããã¯ã©ã€ã¢ã³ãåŽã§ãã€ãã£ãã®WebSocketãã©ãŠã¶ãŒãªããžã§ã¯ãã䜿çšããããã«ãªãããã¹ãŠãå®å šã«æ©èœããŸãã ããåé¡ã¯ãããŸããã ãšãŠãé·ãsocket.ioïŒ
åãããšãçµéšããŸãã ç§ã¯æ¬åœã«æžãçŽããããå¿ èŠã¯ãããŸããã 誰ãããã®åé¡ã§æåããŠããŸããïŒ
ç§ã¯ãã®åé¡ã«æ¬åœã«ããããããŠããŸããã
ãsocket.ioãã®ããŒãžã§ã³ããsocket.io-clientãã§ç¢ºèªããå¿
èŠããããšæããŸãã
ãµãŒããŒ/ã¯ã©ã€ã¢ã³ãã®ããŒãžã§ã³ãäžèŽããªãå Žåãæ¥ç¶ã¯éåžžã«äžå®å®ã§ããã
ã¯ã©ã€ã¢ã³ãã«ã¯ä»¥äžã®ãããªCDNã䜿çšããããšããå§ãããŸãã
@ref: https://cdnjs.com/libraries/socket.io
I hope it helps.
å°å»ºæŠäºã®éçºè
?? ããã¯çŽ æŽãããã§ãã
ç§ããã®åé¡ãæ±ããŠããŸãã
ãã©ã³ã¹ããŒãã®ã¯ããŒãºãšpingã®ã¿ã€ã ã¢ãŠããåå ã§ããŠãŒã¶ãŒãã©ã³ãã ã«åæãããŸããã
ãŸããå€ãã®ãªãã·ã§ã³ïŒpingééãpingã¿ã€ã ã¢ãŠãã転éãªã©ïŒãå€æŽããããšããŸããããæ©èœããŸããã
ãµãŒããŒãšã¯ã©ã€ã¢ã³ãã®socket.ioã®ããŒãžã§ã³ã確èªããŸãã
å€ãã®äººããã®åé¡ã«èŠããã§ããŸãããç§ã¯è§£æ±ºçãèŠã€ããããšãã§ããŸããã
ãã®åé¡ã«é¢ãããã¥ãŒã¹ã¯ãããŸããããŸã£ããåãåé¡ããããŸãã
k8nsã«ãããã€ããå Žåãåãåé¡ãçºçããŸãããããŒã«ã«ã§å®è¡ãããšæ£åžžã«æ©èœããŸãã
ç§ãããã«èŠããã§ããŸã...
@ talas9 @muhammadnasr @htamopåé¡ããããã°/åçŸã§ããããã«ããããã®äžè¬çãªè³ªåïŒ
ããããšãïŒ
2.1.0ãš2.0.4ã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒã§è©ŠããŠã¿ãŸããã ã¯ããŒã ãšãµãã¡ãªïŒææ°ïŒã«ã€ããŠã
ããŒã«ã«ã§å®è¡ãããšæ£åžžã«åäœããŸããïŒåæããã«1æé以äžæ¥ç¶ã§ããŸãïŒãå
¥åããŒããã©ã³ãµãŒã®èåŸã«ããK8nsã«ãããã€ãããšããã®åé¡ãçºçããŸã...
FYIæ¥ç¶ã¯æ¯å25ç§åŸã«æ£ç¢ºã«éããããŸããã¹ã¯ãªãŒã³ã·ã§ãããåç §ããŠãã ãã
@ talas9 @htamop @ dnwldbs84ããŒããã©ã³ãµãŒã䜿çšããŠããŸããïŒ
@darrachequesneã©ã®ããŒããã©ã³ãµãŒãsocket.ioã§äœ¿çšããããšããå§ãããŸããïŒ
@muhammadnasr @darrachequesne
2.1.0ãµãŒããŒãš1.0.0ã¯ã©ã€ã¢ã³ãïŒAndroidïŒã䜿çšããŸãã
æ¥ç¶ã8ã9æéå®å®ãããå¿
èŠããããŸãããäºæããåæãããŸãã
äž¡æ¹ã®ããŒãžã§ã³ã1.7.4ãš0.8.3ã«å€æŽããŸãããïŒ ä»ã®ãœãªã¥ãŒã·ã§ã³ã®æçš¿ã«ãããšã ææ¥ããŸãããããã¹ãããŠã¿ãŸã
ããŒããã©ã³ãµãŒã䜿çšããŠããŸããã§ããã ã¯ã©ã€ã¢ã³ããšãµãŒããŒã®äž¡æ¹ãSocket.ioã®2.0.3ããŒãžã§ã³ã䜿çšããŸããïŒäœ¿çšãããã¹ãŠã®ããŒãžã§ã³ãæãåºããŸããïŒã ã©ã®ãã©ãŠã¶ãåé¡ãåŒãèµ·ãããŠããã®ãããããŸããããã»ãšãã©ã®ãŠãŒã¶ãŒã¯Chromeã䜿çšããŠããŸãã ç§ã®å Žåãåæã¯ã©ã³ãã ã«è¡ããããããåçŸã§ããŸããã
ãããŠãç§ã¯wsã«å€æŽããŸããã åé¡ã解決ãããã©ããã¯ããããŸããã
@muhammadnasr @darrachequesne @ dnwldbs84
ç§ã®å Žåã¯è§£æ±ºãããšæããŸãã
android foreground serviceïŒapi 26ïŒã§ã¯0.8.3 socket.io-clientã䜿çšããnodejsãµãŒããŒã§ã¯1.3.5ããŒãžã§ã³ã䜿çšããŠããŸãã
ãã ããåé¡ã¯ããŒãžã§ã³ã§ã¯ãªãå¯èœæ§ããããŸãã
ãµãŒããŒã®pingIntervalã10msã«å€æŽããŸããããæ£åžžã«æ©èœããŠããããã§ãïŒpingã¿ã€ã ã¢ãŠããšãã©ã³ã¹ããŒãã¯ããŒãºã¯çºçããŸããã§ããïŒ
var io = requireïŒ 'socket.io'ïŒïŒhttpã{pingIntervalïŒ10ãpingTimeoutïŒ4000}ïŒ;
10ããªç§ã¯çãããããããããã¯ãŒã¯ãå§åãããŸãã
10ããªç§ã¯çããªããŸãããã®ããã«ãããšããããã¯ãŒã¯ã¯å§åãããŸãã
æ£ããïŒ
@muhammadnasrä»»æã®ããŒããã©ã³ãµãŒãæ©èœããã¯ãã§ãã 次ã®äŸãåç §ããŠãã ããã
ãã ããããŒãªã³ã°ïŒããã©ã«ãïŒãæå¹ã«ããå Žåã¯ãã¹ãã£ãããŒã»ãã·ã§ã³ãå¿ èŠã§ãã
@darrachequesneåãåé¡ããããŸã
ç§ã䜿çšããŠãããã®ïŒ
Chrome: 61.0.3163.100
Electron: 2.0.2
Socket.io: 2.1.1
åãåé¡ãããããã®ã³ã¡ã³ãhttps://github.com/socketio/socket.io/issues/3025#issuecomment -329024833ããCDNã䜿çšããŠä¿®æ£ããã¿ã€ã ã¢ãŠããšééã次ã®ããã«èšå®ã§ããŸããã
io.set('heartbeat timeout', 60000);
io.set('heartbeat interval', 25000);
ããã
Kubernetesããã³NGINXIngress Controllerã§å®è¡ããå Žåãsocket.ioã§ãåãåé¡ãçºçããŸãã
nginxæ§æããªããŒãããããšãããã»ã¹ãåäœæãããæ¢åã®ãã¹ãŠã®éä¿¡ããããããããŸããããã«ããã transport close
ãçºçããŸããå
¥åã³ã³ãããŒã©ãŒã䜿çšããä»ã®ãããã€ã¡ã³ãã§ã¯ãæ§æããªããŒããããå¯èœæ§ããããŸãã
ãŸã第äžã«ããã®çŽ ââæŽããããããžã§ã¯ãã«æ¬åœã«æè¬ããŸãã
ããã§åãåé¡ãå€åç§ã¯ããªãã«äœãæ°ãããã®ãæã£ãŠããã§ãããã
ããŒãjsã«wsãµãŒããŒãšwsã¯ã©ã€ã¢ã³ãããããŸãã
ãã®wsã¯ã©ã€ã¢ã³ãã¯ããµãŒãã¹ïŒãã€ã¯ããµãŒãã¹ïŒã§ããããŒãjsã¢ããªãã䜿çšãããŸãã
ïŒã¯ã©ã€ã¢ã³ãã¢ããªããã®ïŒWebãã©ãŠã¶ãŒããã®ä»ã®wsã¯ã©ã€ã¢ã³ãã¯ãwsãµãŒããŒãä»ããŠãã®ããŒãjsãµãŒãã¹ãšéä¿¡ããŠããŸãã
ãã¹ãŠãæåŸ ã©ããã«æ©èœããŠããŸãã
çŸåšã®ã¹ãã¬ã¹ãã¹ãïŒ10人ã®ã¯ã©ã€ã¢ã³ããéäžçã«ããŒã¿ãèŠæ±ããŠããŸãïŒã§ã¯ããã¹ãã®æåŸã«ããã¹ãŠã®ãžã§ããšãã©ã³ã¶ã¯ã·ã§ã³ãçµäºãããšããµãŒãã¹ã®æ¥ç¶ããšã©ãŒããã©ã³ã¹ããŒãã¯ããŒãºãã§éããããŸãã ããã¯åžžã«èµ·ãã£ãŠããããã§ã¯ãããŸããã
ããã¯ãµãŒããŒã®æ§æã§ãã
pingTimeoutïŒ15000ã
pingIntervalïŒ20000ã
éãè² è·ã®éã«ããã€ãã®pingã倱ãããããã§ã...ïŒ ãŸãã¯ç§ã¯ç¥ããŸããã
ããã¯ç§ãæåŸ
ãã¹ãããšã§ããïŒ
ãŸããããã©ã«ãã®èšå®pingTimeoutïŒ2000ã§ã¯ãã¹ãã¬ã¹ãã¹ãã®éäžã§ãã®ãšã©ãŒãçºçããŠããŸããã ããããŸã£ããäºæ³å€ã§ãããããµãŒããŒãéè² è·ã«ãªãã2ç§ïŒïŒïŒä»¥å ã«å¿çã§ããããã®ãšã©ãŒãçºçããå¯èœæ§ããããšããŸãã ããããçŸåšpingTimeoutïŒ15000ã䜿çšãããšãã»ãŒ50ïŒ çºçãããã¹ãã®çµäºåŸã«ã®ã¿çºçããŸãã
ããŒãããã€ã¯ããµãŒãã¹ã¯åãLANã§å®è¡ãããŠããå Žåã§ãããã®çš®ã®ãšã©ãŒãäºæããå¿ èŠããããšæããŸãããåé¡ã¯ãªããããçºçããã®ããšããããšã§ãã
ãã®åé¡ãåçŸããããã«å°ããªã»ããã¢ãããäœæããããšããŸããããäœæã§ããŸããã§ããã
ãã°ãã¢ã¯ãã£ãåããæ¹æ³ã¯ïŒ DEBUG = socket.io *ãæ©èœããŠããŸããã å€æ°ã¯èšå®ãããŠããŸãããåºåããããŸããã
ããã¯ïŒ2924ã«é¢é£ããŠãããšåŒ·ãä¿¡ããŠããŸãã
ã¯ã©ã€ã¢ã³ãã§ã®åæ¥ç¶ã¯ãäžéšã®ãã©ãŠã¶ãŒïŒsafariããã³chromeïŒããããããªãŒãç¯çŽããããã«éã¢ã¯ãã£ããªã¿ãã®ã¿ã€ããŒã調æŽããããšã«ãã£ãŠçºçããŸãã
ããã«ãããpingTimeoutãåå ã§ãã¯ã©ã€ã¢ã³ããšãµãŒããŒããã®ããŒãããŒãã¡ãã»ãŒãžãé
延ããŠæ¥ç¶ãéããããŸãã
pingTimeoutãå¢ããããšã¯ããçšåºŠæ©èœããŸãããå®çšŒåç°å¢ã§ã¯ãŸã åæ¥ç¶ãããŸãã
k8nsã«ãããã€ããå Žåãåãåé¡ãçºçããŸãããããŒã«ã«ã§å®è¡ãããšæ£åžžã«æ©èœããŸãã
@muhammadnasrã§ãK8sã®ãããã€ã®åé¡ãä¹ãè¶ããããšãã§ããŸããïŒ åæ§ã®åé¡ãçºçããŠããŸãã
@ bheema01ãããã·/ããŒããã©ã³ãµãŒã§stickysessionãæå¹ã«ãªã£ãŠããããšã確èªããŠãã ãããããã§ãæ©èœããã¯ãã§ãã
åããšã©ãŒãçºçããŸãã
åãåé¡.....ãµãŒããŒåŽã®ãœã±ãããšã³ããã€ã³ããããŒããã©ã³ãµãŒã®èåŸã«ããå Žåãã¯ã©ã€ã¢ã³ãã¯ç¹°ãè¿ãæ¥ç¶ããã³åæããŸãã ã¹ãã£ãããŒã»ãã·ã§ã³ãèšå®ããåŸã§ããåé¡ã¯äŸç¶ãšããŠååšããŸãã @muhammadnasrã¯åé¡ã解決ã§ããŸããã
ã¹ã¬ããã200ããªç§ä»¥äžé »ç¹ã«ãããã¯ããããšãã«ããã®ãšã©ãŒãçºçããŸããã
ãããé »ç¹ã«çºçããå Žåãããã¯socket.ioã«ãšã£ãŠãã¢ããªã«ãšã£ãŠãæªãããšã§ãã
socket.ioã«ã¯ãæ¥ç¶ã®ããŒãããŒãããã§ãã¯ããããã®ã¿ã€ã ã¢ãŠãããããŸãã
ãã®ã¿ã€ã ã¢ãŠããè¶
ãããšãæ¥ç¶ãã·ã£ããããŠã³ããããã®ãšã©ãŒãçºçããŸãã
ã¹ãã£ãããŒã»ãã·ã§ã³ãä¿®æ£ããåŸã®
@dennisatã¯ã©ã€ã¢ã³ãããã³ãã±ãããåä¿¡ããã®ã«ãããæéã確èªããŠã¿ãŸããã ã¯ã©ãŠãã®ãœã±ãããµãŒããŒãšããŒã«ã«ãã¹ãã®ãœã±ãããµãŒããŒã®äž¡æ¹ã§ãã¹ãããã200msãè¶
ãããã³ã«ã ããŒã«ã«ã»ããã¢ããã§ã¯ãœã±ãããåæãããŸãããïŒãã¹ãŠæ£åžžã«æ©èœããŸãïŒãã¯ã©ãŠãã»ããã¢ããã§ã¯ãœã±ãããç¶ç¶çã«æ¥ç¶ããã³åæãããŸãã ã ãããç§ã¯ãããåé¡ã ãšã¯æããªãã
@muhammadnasrããããŸãããããã¯çŽ æŽãããã§ãã å®éã«æå¹ã«ããŸãããããŸã ããã€ãã®åé¡ããããŸãã
@muhammadnasr @darrachequesne @ dnwldbs84
ç§ã®å Žåã¯è§£æ±ºãããšæããŸãã
android foreground serviceïŒapi 26ïŒã§ã¯0.8.3 socket.io-clientã䜿çšããnodejsãµãŒããŒã§ã¯1.3.5ããŒãžã§ã³ã䜿çšããŠããŸãã
ãã ããåé¡ã¯ããŒãžã§ã³ã§ã¯ãªãå¯èœæ§ããããŸãã
ãµãŒããŒã®pingIntervalã10msã«å€æŽããŸããããæ£åžžã«æ©èœããŠããããã§ãïŒpingã¿ã€ã ã¢ãŠããšãã©ã³ã¹ããŒãã¯ããŒãºã¯çºçããŸããã§ããïŒ
var io = requireïŒ 'socket.io'ïŒïŒhttpã{pingIntervalïŒ10ãpingTimeoutïŒ4000}ïŒ;
ããã¯éæ³ã®ããã«æ©èœããŸããããããšã!!!!!!!
pingééããšã«ããã©ã³ã¹ããŒãã¯ããŒãºããçºçããŸããã
ç§ã¯ãã®åé¡ã«æ¬åœã«ããããããŠããŸããã
ãsocket.ioãã®ããŒãžã§ã³ããsocket.io-clientãã§ç¢ºèªããå¿ èŠããããšæããŸãã
ãµãŒããŒ/ã¯ã©ã€ã¢ã³ãã®ããŒãžã§ã³ãäžèŽããªãå Žåãæ¥ç¶ã¯éåžžã«äžå®å®ã§ãããã¯ã©ã€ã¢ã³ãã«ã¯ä»¥äžã®ãããªCDNã䜿çšããããšããå§ãããŸãã
@ref: https://cdnjs.com/libraries/socket.io
I hope it helps.
It works even more magically.
Seems that we can close this issue with your answer, haha
æåŸã«ãã¯ã©ã€ã¢ã³ããšãµãŒããŒã®ããŒãžã§ã³ã®äžäžèŽãåå ã§ããããšãããããŸããã
ã¯ã©ã€ã¢ã³ããšãµãŒããŒã«åãããŒãžã§ã³ã®socket.ioãå
±æããããšããã¹ãŠãæ£åžžã«æ©èœããããã«ãªããŸããã
ping pongããžãã¯ã¯socket.ioã®ããŒãžã§ã³ã«ãã£ãŠç°ãªãå¯èœæ§ãããããµãŒããŒã¯pingééã§ã¯ã©ã€ã¢ã³ãåŽããpingã€ãã³ããåä¿¡ããªãã£ãããããtransportcloseãã¡ãã»ãŒãžã衚瀺ãããŸãã
Google Cloud PlatformïŒGCPïŒã«ãããã€ããåŸã30ç§ããšã«socket.ioãåæããããšããåé¡ãçºçããŸããã ããã¯ãã°ããŒãã«ããŒããã©ã³ãµãŒã«ãã£ãŠäœ¿çšãããããã©ã«ãã®httpã¿ã€ã ã¢ãŠãã§ããããšãå€æããŸããã GCPã®ããã¥ã¡ã³ãã«ã¯ãWebSocketã䜿çšãããšãã«å€ãå€æŽããå¿
èŠããããšèšèŒãããŠããŸãã èšå®ãå€æŽããæé ã¯æ¬¡ã®ãšããã§ãã
https://cloud.google.com/load-balancing/docs/backend-service#timeout -setting
ãsocket.ioãã§ãåãåé¡ã«çŽé¢ããŠããŸãïŒã2.2.0ãã
"socket.io-client"ïŒ "2.2.0"ã
socket.io- clientïŒsocket closeïŒping timeoutïŒ+ 22s
ãã£ã¡ãäžç·ã ããŒã«ã«ãµãŒããŒã§åé¡ãçºçããããšã¯ãããŸããã ãã ããããŒããã©ã³ãµãŒã®èåŸã«ãããã€ãããšãã©ã³ãã ã«pingã¿ã€ã ã¢ãŠããçºçããŸãã ãããã50åã«1åã CDNããŒãžã§ã³ã䜿çšããŠã¹ãã£ãããŒã»ãã·ã§ã³ãè¿œå ããããšããŸããã åé¡ã¯ãŸã ååšããŸãã
ããã€ãã®ã«ã¹ã¿ã åæ¥ç¶ããžãã¯ä»¥å€ã¯äœãæ©èœããŸããã§ããã ã¯ã©ã€ã¢ã³ããåã®IDãšã¯ç°ãªãIDã®ãœã±ãããªãŒãã³ã€ãã³ããååŸããå Žåã¯ãå€ãIDãšæ°ããIDã®åæ¥ç¶ã€ãã³ãããµãŒããŒã«éä¿¡ããŸãã 次ã«ããµãŒããŒäžã§ãã¬ãŒã€ãŒã®ãœã±ããIDãæŽæ°ããã²ãŒã ã®ç¶æ ãåéä¿¡ããŸãã
@tmusaevã¯ãã¯ã©ã€ã¢ã³ãã®ã«ã¹ã¿ã åæ¥ç¶ããžãã¯ãæçš¿ã§ããŸããïŒ
ç§ã¯åãåé¡ãæ±ããŠããŸãïŒ 'ãã©ã³ã¹ããŒãã¯ããŒãº'
åãåé¡ããããŸãã æçµçã«ç§ã¯ããã解決ããŸãã Nginxã¯ç§ã®ãããã·ãµãŒããŒã§ãããæ§æã®proxy_read_timeout
ã¯60ç§ã§ããããã¯ãã¯ã©ã€ã¢ã³ããŸãã¯ãµãŒããŒã60ç§ä»¥å
ã«ã¡ãã»ãŒãžãéä¿¡ããªãå Žåãnginxãåæãããããšã瀺ããŠããããã transport close
errorMsgãååŸã§ããŸãã
ãœãªã¥ãŒã·ã§ã³ïŒ
proxy_read_timeout
ã600ç§ä»¥äžã«å¢ããsetInterval
ã䜿çšããŠããã³ããšã³ãã§ã¡ãã»ãŒãžãéä¿¡ãã"react": "16.8.3",
"react-native": "^0.59.9",
"socket.io": "^2.2.0"
ç§ã¯ãã®ã©ã€ãã©ãªããã£ãããããã€ãã®ã€ãã³ãã®ååŸã«äœ¿çšããŸããã iOSã§ã¯æ£åžžã«åäœããŸãããAndroidã§ã¯åé¡ãçºçããŸãã ãã€ã§ããœã±ããæ¥ç¶ã倱ããåæ¥ç¶ããŸããã ç¶ç¶çã«åãåäœã瀺ããŸãã ãŸãããã®ãã©ã³ã¹ããŒããéããããpingã¿ã€ã ã¢ãŠããšã©ãŒãçºçãããŸã
"react": "16.8.3", "react-native": "^0.59.9", "socket.io": "^2.2.0"
ç§ã¯ãã®ã©ã€ãã©ãªããã£ãããããã€ãã®ã€ãã³ãã®ååŸã«äœ¿çšããŸããã iOSã§ã¯æ£åžžã«åäœããŸãããAndroidã§ã¯åé¡ãçºçããŸãã ãã€ã§ããœã±ããæ¥ç¶ã倱ããåæ¥ç¶ããŸããã ç¶ç¶çã«åãåäœã瀺ããŸãã ãŸãããã®ãã©ã³ã¹ããŒããéããããpingã¿ã€ã ã¢ãŠããšã©ãŒãçºçãããŸã
+1
ç§ãã¡ã®å Žåãåé¡ã¯CDNãããã·ãåå ã§ãã CDNãããã·ãããŠããªãå ã®ãµã€ãã«socket.ioãæ¥ç¶ããããšã§ããã®åé¡ã解決ããŸããã
nginxå ¥åã³ã³ãããŒã©ãŒãæŽæ°ããããšã§ãã®åé¡ã«åãçµã¿ãŸããïŒ
ããŸããŸãªã¹ã¬ããã«é¢ããããã€ãã®ã³ã¡ã³ããèªãã åŸããã®ãã©ã³ã¹ããŒãã¯ããŒãºã®åé¡ã軜æžããããã«è¡ãããã»ãšãã©ãã¹ãŠã®ææ¡ãè©ŠããŸããã ã¯ã©ã€ã¢ã³ã/ãµãŒããŒã§äœ¿çšããŠããããŒãžã§ã³ïŒçŸåšã¯2.0.3ïŒã«ãé¢ããããKubernetesã䜿çšããŠãã€ã¯ããµãŒãã¹ããããã€ãããšãã®åäœãçºçããŸãã
çŸåšããµãŒããŒã®æ§æã¯æ¬¡ã®ãšããã§ãã
ä»ã®äººãèšã£ãããã«ãç§ãã¢ããªã±ãŒã·ã§ã³ãããŒã«ã«ã§å®è¡ãããšãã¯ãã€ã§ããåæã¯ãããŸããã å¥ã®ã¹ã¬ããã§ãsocket.ioã®ããŒãžã§ã³3ãping / pongãå€æŽããããšãèªãã ã®ã§ããµãŒããŒã«å¯ŸããŠå®è¡ãããŸããããã¯ããããä¿®æ£ããã®ã«åœ¹ç«ã€å¯èœæ§ããããŸãã ãã®åé¡ãŸãã¯ãã®æ°ããããŒãžã§ã³ã®å¯èœæ§ã®ããæ¥ä»ã«é¢ãããã¥ãŒã¹ãæŽæ°ã¯ãããŸããïŒ
ã¹ã¬ããã200ããªç§ä»¥äžé »ç¹ã«ãããã¯ããããšãã«ããã®ãšã©ãŒãçºçããŸããã
ãããé »ç¹ã«çºçããå Žåãããã¯socket.ioã«ãšã£ãŠãã¢ããªã«ãšã£ãŠãæªãããšã§ãã
socket.ioã«ã¯ãæ¥ç¶ã®ããŒãããŒãããã§ãã¯ããããã®ã¿ã€ã ã¢ãŠãããããŸãã
ãã®ã¿ã€ã ã¢ãŠããè¶ ãããšãæ¥ç¶ãã·ã£ããããŠã³ããããã®ãšã©ãŒãçºçããŸãã
Socket.IOã䜿çšããŠå€§éã®ããŒã¿ãéä¿¡ããŠããå Žåã¯ãã¹ã¬ããããããã¯ããªãæ¹æ³ã§éä¿¡ããŠãã ããã ç§ã¯ä»æ¥ãReact Nativeã®ãœã±ããã¯ã©ã€ã¢ã³ãã䜿çšããŠããã«ééãããµãŒããŒã«ãã¡ã€ã«ãéä¿¡ããããã«ããã䜿çšããŠããŸãã ãœã±ãããä»ãããã¡ã€ã«ã®éä¿¡ãèšè¿°ããæ¹æ³ãåå ã§ãããã¯åºæ¬çã«é 次ã§ã¯ãªããªãŒã«ã€ã³ã¯ã³ãŽãŒã§ãããããJSã¹ã¬ãããè©°ãŸãããµãŒããŒã«ãã³ãéãè¿ãããšãã§ããããµãŒããŒãåæããŠããããæäŸããŸãããšã©ãŒã
ã¢ããªã«ãåãåé¡ããããŸããããã³ãã³ã®åé¡ã§ã¯ãªããšæããŸãã ãœã±ããã®è»¢éãéãããµãŒããŒåŽãåå ã§ãããšã¯æããŸããã
åãåé¡ã Angularãã©ãŠã¶ã§ã
ãã®æ§æã«ãããåæ¥ç¶ã®æ°ãå€§å¹ ã«åæžãããŸããã
corsã®ããã«forceJSONPã䜿çšããŸãã
åæãããšããã以äžã®åé¡ãèŠã€ãããŸãã
åé¡ïŒ
ãœã±ããã¯ããŒã«ã«ã§åæãããããšãªãæ£åžžã«æ©èœããŠããŸãããç°å¢ã«å±éããããšãåæã®çç±ãšããŠããã©ã³ã¹ããŒãã¯ããŒãºãã䜿çšããŠãœã±ãããåæãããŸãã
ãã®åé¡ã¯ãupstartãµãŒãã¹ãŸãã¯systemmdãµãŒãã¹ã䜿çšããŠããŒãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããå Žåã«ã®ã¿çºçããŸãããããŒãapp.jsã®ãããªã¢ããªã±ãŒã·ã§ã³ãå®è¡ããå Žåããã®åé¡ã¯çºçããŸããã
ç°¡åãªä¿®æ£/åé¿çïŒ
ã¯ã©ã€ã¢ã³ãåŽã§ã¯ããœã±ããã®åææã«ããœã±ããããŠãŒã¶ãŒãè¿œå ããŸãïŒè§åºŠ11ïŒ
self.socket.on('disconnect', (reason) => {
if(currentUser){
self.socket.emit('add user', currentUser);
}
})
äžèšã®ã·ããªãªã§ã¯ããã¹ãŠã®ãŠãŒã¶ãŒã¯åžžã«æ¥ç¶ãããŠãªã³ã©ã€ã³ã§ããããã°ã¢ãŠããããšåæãããŸã
æãåèã«ãªãã³ã¡ã³ã
Google Cloud PlatformïŒGCPïŒã«ãããã€ããåŸã30ç§ããšã«socket.ioãåæããããšããåé¡ãçºçããŸããã ããã¯ãã°ããŒãã«ããŒããã©ã³ãµãŒã«ãã£ãŠäœ¿çšãããããã©ã«ãã®httpã¿ã€ã ã¢ãŠãã§ããããšãå€æããŸããã GCPã®ããã¥ã¡ã³ãã«ã¯ãWebSocketã䜿çšãããšãã«å€ãå€æŽããå¿ èŠããããšèšèŒãããŠããŸãã èšå®ãå€æŽããæé ã¯æ¬¡ã®ãšããã§ãã
https://cloud.google.com/load-balancing/docs/backend-service#timeout -setting