ä»æ¥ãpackage.jsonã«äŸåé¢ä¿ãè¿œå ããåŸãnode_modulesãåé€ããnpm_installãå®è¡ããŸããã socket.ioã®ããŒãžã§ã³çªå·ãæå®ããªãã£ãã®ã§ãææ°ã®ãã®ãååŸãããšæããŸãã
ç§ããããããåŸãç§ã¯ãã®äžã«æ°ã¥ããŸãããïŒ ã¢ããªã±ãŒã·ã§ã³ãèµ·åããŠãã1åã»ã©çµã€ãšããœã±ãããåæãããnode.jsã³ã³ãœãŒã«ã®åºåã«ããã©ã³ã¹ããŒãçµäºãæ å ±ã¡ãã»ãŒãžã衚瀺ãããŸãã ç§ã¯socket.ioãwebsocketå°çšã«èšå®ããŠããŸãã Linuxäžã®Chrome13ã䜿çšããŠããŸãã
package.jsonã«ã¢ã¯ã»ã¹ããŠ0.8.7ã«èšå®ããnpm installãå床å®è¡ããŸããããåæã衚瀺ãããªããªããŸããã
ããŸãããã°ãç§ã¯äœãã«ã€ããŠæ··ä¹±ããã ãã§ã¯ãããŸããã§ããã ç§ã¯æ»ã£ãŠæé ãç¹°ãè¿ããŸããããåãçµæã«ãªããŸããã ç³ãèš³ãããŸããããå ·äœçãªæ å ±ã¯ãããŸããã
0.9.1ã¯ãããŒãããŒããææå°æ©ã®åæãããªã¬ãŒãããã°ãå°å
¥ããå¯èœæ§ããããŸãã
ç§ã¯ããã調ã¹ãŠããŸãããããŠææ¥ã¯0.9.2ã«ãªããããããŸãã
åäžã Macã®ChromeãšFFãåããã·ã³ã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒã§åæ/åæ¥ç¶ãç¹°ãè¿ãããã®ã確èªããŸãã
readmeã®socket.ioã®äŸããç°¡åã«ããããŸãããããã©ã«ãèšå®ã¯å€æŽãããŠããŸããã
åãåé¡ããããŸã...ãœã±ãããåæãããçŽåŸã«ãæ°ãããœã±ãããã€ã³ã¹ã¿ã³ã¹åãããããšã«ãæ°ã¥ããŸããã
ç§ã®åé¿çã¯ãã¯ããŒãºã¿ã€ã ã¢ãŠããæåã§èšå®ããããšã§ããã
io.configure( function() {
io.set('close timeout', 60*60*24); // 24h time out
});
ç§ããã®åé¡ãæ±ããŠããŸããã åé¿çãæäŸããŠãããsteffenwtã«æè¬ããŸãã
ã¯ããç§ã«ããã®ãšã©ãŒããããŸãã ç§ã¯æ°æ¥åã«socket.ioãåŠã³å§ããŸããããæåã¯äœãééã£ãããšãããŠãããšæããŸããã
0.9.0ãžã®ããŠã³ã°ã¬ãŒãã¯æ©èœããŸãã
é¢é£ãããã©ããã¯ããããŸãããããœã±ããã¯1ã€ããã®ããŒãããŒãã§éããããŸãã ã ãããã®ããã«ãªããŸã
heartbeat2 gets sent and recieved all fine
heartbeat3 gets sens but never gets recieved
disconnect
ããã«ãã°ã€ã³ïŒ
debug - emitting heartbeat for client 18615332192056708826
debug - websocket writing 2::
debug - set heartbeat timeout for client 18615332192056708826
info - transport end
debug - set close timeout for client 18615332192056708826
debug - cleared close timeout for client 18615332192056708826
debug - cleared heartbeat timeout for client 18615332192056708826
debug - discarding transport
ç§ãåé¡ããããŸãã
0.91-1ã䜿çšããŸãã
è©ŠããŠã¿ãŸããããåé¡ããããŸãã
io.configureïŒfunctionïŒïŒ{
io.setïŒ 'close timeout'ã60_60_24ïŒ; // 24æéã¿ã€ã ã¢ãŠã
}ïŒ;
ããã§åãåé¡
0.9.0ã«ããŠã³ã°ã¬ãŒãããŸãããïŒ NPMã§ææ°ã®ããŒã¯ãä»ããŸãã
ããã§åãåé¡ã0.9.1-1ã§çºçããã¡ããã©0.9.0ã«ããŠã³ã°ã¬ãŒããããåé¡ã¯è§£æ¶ãããŸããã
åé¿çãšããŠãã¯ã©ã€ã¢ã³ãããããã€ãã®ããŒãã¢ã©ã€ããéä¿¡ããããšãã°20ç§éããµãŒããŒãããããã«ããã«å¿çããããšãã§ããŸãã
ã¯ã©ã€ã¢ã³ãïŒsetIntervalïŒfunctionïŒïŒ{socket.emitïŒ "keep-alive"ãnullïŒ}ã20 * 1000ïŒ;
ãµãŒããŒïŒsocket.onïŒ 'keep-alive'ãfunctionïŒdataïŒ{socket.emitïŒ 'keep-alive'ãnullïŒ;}ïŒ;
FWIWïŒå¥ã®ãµãŒããŒããã¯ã©ã€ã¢ã³ãã«ãµãŒãã¹ãæäŸããŠããŠãã¯ã©ã€ã¢ã³ãã³ãŒãã0.9.0ã«ããŠã³ã°ã¬ãŒããããŠããªãå Žåã§ããåé¡ãçºçããŸãã
'socket.io'ã0.9.0ã«ããŠã³ã°ã¬ãŒãããŸããããããã§ãåé¡ãçºçããŸããã 次ã«ãsocket.io-clientã0.9.0ã«ããŠã³ã°ã¬ãŒãããŸããããåæãããŸããã
ãŸããç§ãè©Šãã倱æãããã©ã³ã¹ããŒãã¯ãWebãœã±ãããšxhrããŒãªã³ã°ã§ãã
ãã®åé¡ã¯è§£æ±ºãããã¹ãã§ãããïŒ
ç§ãåãåé¡ãæ±ããŠãã ããããç§ã¯haproxyãæã£ãŠããããã ãšæ°ã¥ããŸããã
ç§ã®åé¡ã¯ããã«ãããŸãïŒ
frontend all 0.0.0.0:80
default_backend www_backend
acl is_websocket path_beg /socket.io
acl is_websocket hdr(Upgrade) -i WebSocket
acl is_websocket hdr_beg(Host) -i ws
timeout client 1000
ãtimeoutclient1000ãã®è¡ã«ãããŸãïŒåé¡ããããã©ããã確èªããããã«1ç§ã«å€æŽããŸããããåé¡ããããŸãã...ïŒã
ã ããä»ãç§ã¯WebSocketããã¯ãšã³ãã«å¯ŸããŠã®ã¿ãããå€æŽããæ¹æ³ããããã©ãããæ¢ããŠããŸãã
ç§ã¯ããã誰ããå©ããããšãé¡ã£ãŠããŸãïŒ+1ïŒ
åèãŸã§ã«ãxhr-pollingãš0.9.14ã§ããã®åé¡ããŸã çºçããŠããŸãã 25ç§ããšã«åŒ·å¶çã«åæãããŸãã ãã°ã¯äžèšãšåãã§ãã
ãŸããããã0.9.14ãµãŒããŒãš0.9ã¯ã©ã€ã¢ã³ãã§çºçããŠããããšã確èªã§ããŸãã 25ç§ããšã«åæãããããã§ã¯ãããŸããããæç¶çã«åæãããŸãã ç§ã¯ãããåŒã³åºãstream.emitïŒ 'end'ïŒ;ã«ãã¬ãŒã¹ããŸããã node.jsã®_stream_readable.jsã«ãããŸãã ãããã¡å ã®EOFãèªã¿åã£ãçµæã ãšæããŸãã
@citosidãªãhaproxyã¯ã©ã€ã¢ã³ãã®ã¿ã€ã ã¢ãŠãããããåŒãèµ·ããã®ã§ããããïŒ
0.9.16ã§èµ·ãã£ãŠããŸãã BoarKãšåãã§ã
socket.ioãµããŒãã¯ç¡å¹ã§ããïŒ
@joefaronæ»ã¬åã«ãµããŒããå¿ èŠã§ãã ã€ãŸããSocket.IOã®ãµããŒãã¯å®å šã§ã¯ãªããååšããªãã£ãã ãã§ãã
Socket.io 0.9.16ã®åãåé¡-æ¥ç¶ãçŽ25ç§ããšã«ããããããåæã«ããã©ã³ã¹ããŒãã®ç Žæ£ãã瀺ããã°ã衚瀺ãããŸãã
0.8.6ã«ããŠã³ã°ã¬ãŒããããšãåºæ¬çã«ãã¹ãŠãä¿®æ£ãããŸããã
websocketãžã®ããã¯ã¢ãããšããŠxhr-pollingã®ä»£ããã«jsonp-polling ..ã¯é ãããã§ã
ããå®å®ããã
10:16ã®æ¥ã2014幎1æ26æ¥ã«ã¯ãã¢ã©ã³ã«ãã[email protected] ïŒ
Socket.io0.9.16ã®åãåé¡-æ¥ç¶ãçŽ25ããšã«ããããããã®ã確èªãã
ç§ãšããã©ã³ã¹ããŒãã®ç Žæ£ããåæã«ç€ºããã°ãâ
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGi tHubhttpsïŒ//github.com/LearnBoost/socket.io/issues/777#issuecomment-33325205ã§è¡šç€ºããŠãã ãã
ã
ããã«ã¡ã¯@joefaron ãããªãã®å©ããå¿æŽããŸãã
ç§ã¯ä»æ©ããŸããŸãªèšå®ãªãã·ã§ã³ã§å°ãéãã§ããŠãææ¥ãããããã«èª¿ã¹ãŸãããåé¡ã¯ããŒãããŒããã§ãã¯ã倱æããããšã§ããããšã確èªã§ããŸãã ãããã®ãã§ãã¯ã¯ããŠãŒã¶ãŒãžã®æ¥ç¶ãåŒãç¶ãå¿ èŠã§ãããäœããã®çç±ã§åæãéä¿¡ããã«ãŠãŒã¶ãŒãé¢ããŠããªãããšã確èªããããã«å®æœãããŸãã
FirefoxãšChromeã®çŸåšã®å®å®ãããã«ãïŒ32.0.1700.76 mïŒã®äž¡æ¹ã§ãã®ãã°ãåçŸããããšãã§ããŸããã
æåã¯ãããŒãããŒããå®å
šã«ç¡å¹ã«ããããšããŸããããã¢ããªã±ãŒã·ã§ã³ã§ã¯å®éã«ã¯å¿
èŠãããŸããã§ãããããã¯æ¬¡ã®ããã«å®è¡ã§ããŸãïŒçŸåšã®ããã¥ã¡ã³ãã«ãããšããããè©Šãããšããããã¹ãŠã®ãã©ã³ã¹ããŒãã¡ãœãããåé€ãããããã§ãåžžã«çµäºããŸãããã¯ã©ãã·ã¥ããŠåèµ·åããŸãïŒã
io.set('heartbeats', false);
ããã倱æããã®ã§ãç§ã®æ¬¡ã®è©Šã¿ã¯ãapp.jså
ã§ä»¥äžã䜿çšããŠå®è¡ã§ããããŒãããŒãèŠæ±éã®ã¿ã€ã ã¢ãŠããå¢ããããšã§ããã
io.set('heartbeat timeout', 99999); // 99999 being the time between requests in seconds - Default is 25, please choose your value as applicable for your applications
ã¯ã©ã€ã¢ã³ãã®åæãæ°ã«ããªãã®ã§ãããã¯ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠã¯æ±ãã«ãªããŸããããããã¯ããªãã®ç°å¢ã§ã¯å®è¡å¯èœãªãªãã·ã§ã³ã§ã¯ãªããããããŸããã
ããã圹ç«ã€å Žåã«åããŠããã®åé¡ãæ±ããŠããä»ã®äººã«ãšã£ãŠãç§ã®ç°å¢ã¯æ¬¡ã®ãšããã§ãã
NodeJS: v0.10.24
Socket.io: v0.9.16
Centos 6.5
ããã¯æ¬åœã«ç·æ¥/é倧ãªåé¡ã ãšæããŸãã ãªããŸã 解決ãããŠããªãã®ã§ããïŒ ãã®å·ã®ã¹ã¬ãããå§ãŸã£ãŠãã2幎ãçµéããŸããã
ç§ããã®åé¡ãçµéšããŠããŸãïŒ
NodeJS: v0.10.24
Socket.io: v0.9.16
d-oliverosïŒ0.8.6ã«ããŠã³ã°ã¬ãŒãããããšã匷ããå§ãããŸãã ç§ã¯ãããæã£ãŠããŸãã
åé¡..ãããŠç§ã¯ææ°ã®ãã«ããè¿ãå°æ¥ä¿®æ£ããããšã¯æããªãã
ååå «æ55åPMã«åã2014幎2æ15æ¥ã«ã¯ãD-ãªãªã[email protected] ïŒ
ããã¯æ¬åœã«ç·æ¥/é倧ãªåé¡ã ãšæããŸãã ãªãããã§ã¯ãªãã£ãã®ã§ãã
ãŸã 解決ããŸãããïŒ ãã®å·ã®ã¹ã¬ãããå§ãŸã£ãŠãã2幎ãçµéããŸãããç§ããã®åé¡ãçµéšããŠããŸãïŒ
NodeJSïŒv0.10.24
Socket.ioïŒv0.9.16ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGi tHubhttpsïŒ//github.com/LearnBoost/socket.io/issues/777#issuecomment-35177466ã§è¡šç€ºããŠãã ãã
ã
æ°ããmaster
è©ŠããŠãã ããããã®åé¡ã¯ãªããªããŸããã
ãã®åé¡ã®ä¿®æ£ãå«ã0.9.17ãªãªãŒã¹ã¯ãããŸããïŒ
@fgnass 1.0.0-pre
åçŸã§ããŸããïŒ
@guilleã¯ãããŸã§ã®ãšããããããã§ãïŒ ãŸãçºçããå Žåã¯ãç¥ããããŸãã
ããã«ã¡ã¯@guilleãã®ä¿®æ£ã0.9.16ã«å°å ¥ããæ¹æ³ã¯ãããŸããïŒ ååã«ç¢ºç«ãããæ¬çªç°å¢ã§node.js / socket.ioã䜿çšããŠãããšããã ãã§ããã©ãããã©ãŒã ã®ããããåŽé¢ã®ãã¬ãªãªãŒã¹ããŒãžã§ã³ã䜿çšããããšãæ£åœåããã®ã«èŠåŽããŸãã 0.9.16ã®ããããå®è¡ã§ããå ŽåããŸãã¯1.0.0ãïŒéåžžã«ïŒè¿ãå°æ¥ã«ãªãªãŒã¹ãããäºå®ã®å Žåã¯ããããã¯ããã«æãŸããã§ãããã
@eggysplatã®+1
@ aran112000 heartbeat timeout
åé¿çã«æè¬ããŸãã v0.9.16ã§åäœããŸãã
å®éãç§ã¯ãã®åé¡ãæ±ããçç±ãèŠã€ããŸããã éåžžã«æ¥ããããããšã§ãããå®éã«ã¯ãã®ãã°ã®ããv0.9.0ã䜿çšããŠããã®ã«ãv0.9.16ã䜿çšããŠãããšæããŸããã ããã¯ãv0.9.2ã§https://github.com/LearnBoost/socket.io/commit/57a0b2406004e46ec34729392ee289191a4f78e7ããã³https://github.com/LearnBoost/socket.io/commit/df5f23d3091df3bbf296ae952609dfbbc7be28c3ã«ãã£ãŠä¿®æ£ãããŸãã
v0.9.0ã®å Žåã®ããã«ã heartbeat interval
ãheartbeat timeout
ãã倧ãããªããªãããã«ããŠãã ããã
ä»ã®äººã«æ°ä»ãããããã«æçš¿ãç·šéããïŒ
Macã§åé¡ããã¹ãããããšã決å®ãããŸã§ãæ°æéã®ãã°è¿œè·¡ãç¡é§ã«ããŸããã Windows 8ã®ã¢ã³ããŠã€ã«ã¹ãæ¥ç¶ããããã¯ããç©äºããããããããŠããããã§ãã ãããã¢ã³ã€ã³ã¹ããŒã«ããåŸããã¹ãŠãæ£åžžã«åäœããŸãã
é¢é£ããæçš¿ã¯å®éã«ã¯ããã«ãããŸãããèŠã€ããã®ã¯éåžžã«å°é£ã§ãã
https://github.com/LearnBoost/socket.io/wiki/Socket.IO-and-firewall-software
ç§ã¯socket.ioã®åå¿è ã§ã2æ¥ä»¥äžããããŸããã ããŒã¿ã®éåä¿¡åŸãã¯ã©ã€ã¢ã³ãã¯åæããŠåæ¥ç¶ãããããsocket.idã®å€ãå€æŽãããŸã
socket.io:client client close with reason transport close +39s
socket.io:socket closing socket - reason transport close +44s
.
.
.
socket.io:namespace adding socket to nsp / +4.1m
socket.io:socket socket connected - writing packet +1s
æåŸã«ãã³ãŒã«ããã¯å ã«äŸå€ãããããšãããããŸããããã®ãããsocket.ioã¯ã·ã¹ãã ãããµã€ã¬ã³ãã«åæããŠåæ¥ç¶ããŸãã
socket.on('someEvent', function(){
var a = null;
a.b; //You won't be aware of this error, this error is suppressed and won't be shown on console.
//Moreover, it disconnects and reconnects
})
ãã®ã³ã¡ã³ããåç §ããŠãã ãã
ãã®ããããµã€ã¬ã³ãã«ãšã©ãŒããã£ããããã³ã³ãœãŒã«ã«äœã衚瀺ãããŸããã ãªãããã¯ç§ã«éç¥ããããšããããã«ãšã©ãŒãæå¶ããåæ/åæ¥ç¶ããã®ã§ããïŒ
1.3.5ãšã©ãŒã¯ãŸã ãããŸã
ããã¯...ã§ããïŒ
ã¯ããåé¡ã¯ãŸã 1.3.5ã«ååšããŸã...
åé¡ã¯ãŸã ååšããŸã
ã¯ããåé¡ã¯ãŸã 1.3.5ã§çºçããŠããŸããä¿®æ£ããŠãã ãã
@citosidãææããŠããããã«ãããã¯haproxyã¯ã©ã€ã¢ã³ãã®ã¿ã€ã ã¢ãŠãã®åé¡ã ãšæããŸãã WebSocketããã¯ãšã³ãã®haproxyã¯ã©ã€ã¢ã³ãã¿ã€ã ã¢ãŠããå¢ãããšããã®åé¡ã¯ä¿®æ£ãããã¯ãã§ãã
åãåé¡ããããŸãããhaproxyã䜿çšããŠããŸããã ãããæ©èœããŠããæåŸã®ããŒãžã§ã³ãç¥ã£ãŠãã人ã¯ããŸããïŒ
ããŠãç§ã¯ãŸããåé¡ãç§ãã¡ã®ã·ã¹ãã ã§100ïŒ ä¿®æ£ãããŠããªããšããå ±åãåããŠããŸãã é¢çœãããšã«ãhaproxyã®ãtimeoutclient 1ãã1ç§ã«èšå®ããããšã§åé¡ã確å®ã«åçŸã§ããããã³ããšã³ãã§ãã°ãçµéšã§ããŸããã
ããã«ä¿ãããŠããã¿ã€ã ã¢ãŠãã¯ã©ã€ã¢ã³ãããããå€ãã®æ°ã«å¢ãããsocket.ioããŒãã¢ã©ã€ã/ããŒãããŒãã«æ¥ç¶ãæŽæ°ããã®ã«ååãªæéãããããããåé¡ããªããªããšèããŸããã ãã®ä»®å®ã¯ããããééã£ãŠããã®ã§ããã£ãšå€ãã®ããšãèŠã€ããããçããã«æçš¿ãç¶ããŸãã
ç§ã¯ãããstackoverflowã®æçš¿ã«æçš¿ããŸããããäžéšã®äººã«ãšã£ãŠã¯ããã§è§£æ±ºããå¯èœæ§ããããŸãã
ãHackTimer.jsãšccapture.jsã¯ã©ã¡ããwindow.setTimeoutãã«ã¹ã¿ã é¢æ°ã«çœ®ãæããŠããããã§ããHackTimer.jsã¯ä»ã®JavaScriptã®åã«å®è¡ããã°åé¡ãªãåäœããããã§ããccapture.jsã®å Žåã¯ããããæ£ããããšã確èªããŠãã ãããæåã®ã¹ã¯ãªãããšããŠå®è¡ããŸãããã®ãããSocketIOã¯æåã«ãã©ãŠã¶ã®ãã€ãã£ãsetTimeoutã䜿çšããŸãããã®åŸãã«ã¹ã¿ã setTimeoutã«ãã£ãŠå¹ãé£ã°ãããçŸåšå®è¡äžã®ã¿ã€ããŒãäžæãããŸããã
ã³ãŒããæ€çŽ¢ããŠãã©ã€ãã©ãªã®1ã€ãã³ãŒãã眮ãæããŠãããã©ããã確èªããŸãã
ag 'window.setTimeout\s*='
ã³ã³ãœãŒã«ã§ãã¹ãããŠãsetTimeoutãå€æŽãããŠãããã©ããã確èªããããšãã§ããŸãã
/native/.test(window.setTimeout) // returns true for the native function and false for a custom one
ãã®ãã°ã¯ãŸã ååšããŸããïŒ ãã¹ã¿ãŒããŒãžã§ã³ã«ã¢ããã°ã¬ãŒãããŸãããããã©ã³ã¹ããŒãã®çµäºéç¥ã«ãããã¢ãã€ã«ããã€ã¹ã¯çŽ2åã§åæãããŸãã
ããã¯ãsocket.io 1>ããé¢ããŠãsocket.io0.9.17ãç¶æããããã®ãã®ã§ããã ããããä»ãç§ã¯åè©Šè¡ããŠããŸãããµãŒããŒã«ãã³ãã³ãæåã§èšå®ããŠããµãŒããŒãåç¶ããã19ååŸã«åæããŸããééã¯35ç§ããšã§ãã
socket.io 0.9.17ãå®è¡ããå Žåããã®åé¡ã¯çºçããŸããããã ããå»æ¢ãããŠããããããã以äžäœ¿çšããããããŸããã ã©ããªå©ãã§ããããã¯ã¢ãã€ã«ããã€ã¹ã®ãã©ãŠã¶ã§èµ·ãããŸãã
@utanåçŸæé ã¯ïŒ
ããã«ã¡ã¯@rauchg ã
ãè¿äºãããããšãããããŸã..
1ïŒsocket.io1.4.0ãã€ã³ã¹ããŒã«ããŸã
2ïŒnginxconfigããããã·ã«èšå®ããŸã
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_pass http://io_nodes;
3ïŒsocket.io 1.4.0 / 2015-11-28ã䜿çšããŠã¯ã©ã€ã¢ã³ããèšå®ããŸã
4ïŒã¢ãã€ã«ããã€ã¹ã«æ¥ç¶ããŸãã
5ïŒã¢ãã€ã«ãã©ãŠã¶ãã¢ããªã«æ¥ç¶ãããŸãŸã«ããŠãããé»è©±ãã¢ã€ãã«ç¶æ
ã®ãŸãŸã«ããŸãã
次ã«ãã°;
engine:polling compressing +0ms
engine:socket executing batch send callback +1ms
PuTTY engine intercepting request for path "/socket.io/" +95ms
engine handling "GET" http request "/socket.io/?EIO=3&transport=polling&t=L8YVUt6&sid=DJNvvkhmCQew_3vGAAAB" +0ms
engine setting new request for existing client +0ms
engine:polling setting request +0ms
engine:socket transport error +6s
engine:polling closing +2ms
engine:polling transport writable - closing right away +0ms
engine:polling writing "ᅵ1" +0ms
socket.io:client client close with reason transport error +0ms
socket.io:socket closing socket - reason transport error +0ms
34ååŸã«åæãããŸãã
ããŒãªã³ã°ã䜿çšããŠããå Žåã¯ããã®ãšã©ãŒãã°ã衚瀺ãããŸãã
engine:socket executing batch send callback +1ms
PuTTY engine intercepting request for path "/socket.io/" +106ms
engine handling "GET" http request "/socket.io/?EIO=3&transport=polling&t=L8YXgi6&sid=skadf3It4qBRi0S0AAAC" +1ms
engine setting new request for existing client +0ms
engine:polling setting request +0ms
engine:socket transport error +3s
engine:polling closing +0ms
engine:polling transport writable - closing right away +0ms
engine:polling writing "ᅵ1" +0ms
socket.io:client client close with reason transport error +1ms
socket.io:socket closing socket - reason transport error +2ms
engine intercepting request for path "/socket.io/" +373ms
engine handling "POST" http request "/socket.io/?EIO=3&transport=polling&t=L8YXhdB&sid=skadf3It4qBRi0S0AAAC" +0ms
ããã§@rauchgã¯ãããéããŸãããïŒ
æ¬åœã«ããªãããã¹ãã ãšã¯æããªãã
ç§ã¯ããŸããã§ããã
@rauchg ã
ã§ã¯ãããã¯ä»ã®socket.ioã®æ£åžžãªåäœã§ããïŒ ãŠãŒã¶ãŒããã©ã°ã€ã³ãããŠããããã¢ã€ãã«ç¶æ
ã®å Žåãã¢ãã€ã«ããã€ã¹ã®ãŠãŒã¶ãŒãåæããWSãããã³ã«ã«äœãå€æŽããããŸãããïŒ
ç§ã¯ãã®åé¡ã§é ãå£ã«ã¶ã€ããŠããŸãããã¢ããã°ã¬ãŒããå®äºã§ããŸãã..ãããŠæ°ããsocket.ioã§ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããŸã...
ç§ã®ãµãŒããŒUbuntu10.10
NginxããŒãžã§ã³ïŒNginx / 1.8.0
ããŒãv0.10.31 // 4.0ã«ã¢ããã°ã¬ãŒãããŠãåãã§ãã
httpsãšNginxãããã·socket.ioã䜿çšããŸãã
ä»ã®èª°ããåãåé¡ãæ±ããŠããŸããããããšãç§ã ãã§ããïŒ
ç§ããããããããªããšæããŸããããããç§ã®ã±ãŒã¹ãç¹å®ããã®ã¯éåžžã«é£ããã§ãã ç§ã¯socket.ioã§sails.jsã䜿çšããŠããŸãã
ubuntu 14.04
ããŒãv5.3.0
npm v 3.3.12
åžã [email protected]
socket.io@~1.4.3
ç§ã®ã¯ã©ã€ã¢ã³ãã¯socket.io-clientãšsails.io.jsã®çµã¿åããã§ãã
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
var io = sailsIOClient(socketIOClient);
io.socket.on('connect', function(data){....})
ãããã£ãŠãæåã®æ¥ç¶ã¯æ°žä¹ ã«ç¶ããŸã...ãããããã®ã¯ã©ã€ã¢ã³ããžã®.emitïŒïŒãŸãã¯.broadcastïŒïŒã®åŸããµãŒããŒã¯çŽ25ç§ãã1ååŸã«ã¯ã©ã€ã¢ã³ãããã³ãããŸããã¯ã©ã€ã¢ã³ãã¯åæã®éç¥ãåãåããŸããã ã ãŸã æ¥ç¶ãããŠãããšæããŸãã
éåžžã«ã€ã©ã€ã©ããŸãã
åæ§ã®åé¡ãçºçããŠããŸãããå®å šãªãœã±ããïŒwsã®ä»£ããã«wssïŒã䜿çšããŠããå Žåã«éããŸãã wsã䜿çšãããšãã¹ãŠãæ£åžžã«æ©èœããŸãããwssã䜿çšãããšãæ¥ç¶ãã©ã³ãã ãªæéïŒã15åïŒã§æ£çºçã«åæãããŸãã ãã¡ã€ã¢ãŠã©ãŒã«ããããã·ããããŸããã
ããããšã@ andrin-n-dreamç§ã®ãã®ã¯SSLã«ãé¢ä¿ããŠãããšæããŸãã ã¯ã©ã€ã¢ã³ããšããŠWindowsãã·ã³ã䜿çšãããµãŒããŒãšããŠubuntu vmïŒåããã·ã³ïŒã䜿çšããŠããŸãã ããªããžãããã¯ãŒã¯ã¢ããã¿ã äžè¬çãªãããã¯ãŒã¯æ¥ç¶ã§åé¡ãçºçããããšã¯ãããŸããã
nginxSSLãŸãã¯sails.jsSSLã¿ãŒãããŒã·ã§ã³ã®ã©ã¡ãã䜿çšãããã«é¢ä¿ãªããSSLã§çºçããŸãã
[email protected]ããã«éãããã¡ãŒã« åä¿¡è
ãäŒå¡æ§ã®ã¡ãŒã«ãåä¿¡é®æããŸããã
ç§ã¯æ°žé ã«ãããã°ããŸããããSSLã®å¥ã®è§£æ±ºçãèŠã€ããããšãã§ããŸããã§ããããæåã§åæ¥ç¶ããŸããã engine.ioãç§ã®ããã«ãããè¡ãããã©ã³ã¹ããŒããéãããããšãã«åè©Šè¡ããã®ã§ããã°çŽ æŽãããã§ãããã
ããã«å¯Ÿãã解決çã¯ãããŸããïŒ ç§ã¯ãŸã£ããåãåé¡ãæ±ããŠããŸãã æ°ç§åŸããµãŒããŒãããããã°ãã°ã«ããŒãããŒãã¿ã€ã ã¢ãŠãã衚瀺ãããŸãããã¯ã©ã€ã¢ã³ãã¯ãŸã æ¥ç¶ãããŠãããšèŠãªããŸãã
ä»ã®å·®ãè¿«ã£ãåé¡ã®ããã«ãç§ã¯èªåã®ç°å¢ãã¢ããã°ã¬ãŒãããŸããããããŠããã¯ä»ããã¯ããŒããŒã«ãããŸãã ããŒã6.5.0ãéããçããã©ããã確èªãããšããã§ãããã Sails.jsã¯ããã€ãã®ããã±ãŒãžãæŽæ°ãããããã®äœã¬ãã«é¢æ°ã®äœ¿çšãå€æŽããŸãã...
倧éã®ã¬ã¬ã·ãŒC ++ã移è¡ããŠããã®ã§ãä»ã¯ããã«åã³é£ã³èŸŒãæéããããŸããã å€åä»å¹Žã®åŸåã1æã
ããã¯2.0.3ã§ããŸã çºçããŠããŸã...
https://github.com/socketio/socket.io/issues/3025
åé¿çããªããšãã¯ã©ã€ã¢ã³ãã®25ïŒ ã§ãã®åé¡ãçºçãããããsocket.ioã¯åºæ¬çã«äœ¿çšã§ããŸããã
io.setïŒ 'ããŒãããŒãã¿ã€ã ã¢ãŠã'ã99999ïŒ;
@ Aaron1011ããã¯ãµãŒããŒåŽãŸãã¯ã¯ã©ã€ã¢ã³ãã³ãŒããæå³ããŸããïŒ ãµãŒããŒåŽã®å Žåãã¯ã©ã€ã¢ã³ãåŽã§äœããå€æŽããå¿ èŠããããŸããïŒ
è©ŠããïŒ
io.setïŒ 'ããŒãããŒãã¿ã€ã ã¢ãŠã'ã99999ïŒ;
ãµãŒããŒåŽã§ãsocket.io v2.0.3ã䜿çšããŠåé¡ãä¿®æ£ããŸããã§ããã 次ã«0.8.6ã«ããŠã³ã°ã¬ãŒãããŠã¿ãŸãã
ããã¯ç¢ºãã«å·šå€§ãªãŠãµã®ã®ç©Žã§ããããã0.8.6ã«ããŠã³ã°ã¬ãŒãã§ããŸããã§ããã ãã¹ãŠã®æ§æãå€æŽããã0.8.6ã§èŠã€ããããšãã§ããããã¥ã¡ã³ãããªããããããã¯å€±ãããåå ã§ãã ãã®åé¡ã解決ããããšãæåŸ ããŠãã¢ããªãå€ãããŒãžã§ã³ã«ããŠã³ã°ã¬ãŒãããããã«æžãçŽãããã¯ãããŸããã
誰ããv2.03ã®ã¢ã€ãã¢/ä¿®æ£ãæã£ãŠããŸããïŒ ç§ãè©ŠããããšïŒ
ç§ã¯ãããã³ãŒãã£ã³ã°ãšã©ãŒã§ã¯ãªãããšã確信ããŠããŸããããããä»ã§ã¯èµ·ãããªãã®ã§ãPCç¹æã§ãã ãããã¯ãŒã¯ã¢ããã¿ãšé¢ä¿ããããããããŸããã
@forgeableSun Primusã«åºã¥ããŠurã¢ããªãäœæããå¿ èŠããããŸããç§ã¯ãã¢ããªãprimusã§ãªãã¡ã¯ã¿ãªã³ã°ããçŸåšãsocketJsã䜿çšããŠããŸãã
ä»ã®ãããžã§ã¯ãããµããŒãããŸããä»ã®ãªã¢ã«ã¿ã€ã ãããžã§ã¯ãã䜿çšããããã«ä»ã®ã³ãŒããå€æŽããå¿ èŠã¯ãããŸããã
ããããã
@utanãã£ãŠ
npm install browserchannel --save
var primus = new PrimusïŒserverã{transformerïŒ 'browserchannel'}ïŒ;
https://github.com/primus/primus/blob/master/README.md#supported -real-time-frameworks
åžæã圹ç«ã¡ãŸãã
ãã©ãŠã¶ãã£ãã«ã¯socket.ioãšäœã®é¢ä¿ããããŸããïŒ
ããã¯ãå¥ã®ãã¬ãŒã ã¯ãŒã¯ã«åãæ¿ããæ¹æ³ã®åãªãäŸã§ãã
ããªããäŸãæ±ããããã«..
倧äžå€«ã§ãããsocket.ioã¯ãµããŒããããŠãããªã¢ã«ã¿ã€ã ãã¬ãŒã ã¯ãŒã¯ã®1ã€ãšããŠããªã¹ããããŠããŸããã APIãåãæ¿ããã®ã¯1è¡ã®ã³ãŒãã ãã§ã¯ãããŸãããäŸãæããã«ãããã¥ã¡ã³ãããããã©ã®ããã«å®£äŒã§ãããããããŸããã
èããŠãã ãããsocket.ioã¯> = 1ã®åŸã§ãã°ããããå¥åŠãªåæããããŸããprimusã䜿çšããããšãææ¡ããŠããã®ã§ãå¥ã®ãã¬ãŒã ã¯ãŒã¯ã«åãæ¿ããããšãã§ããŸãã
ãã®ãããäŸãæããŸããããã¡ãããprimusã䜿çšããã«ã¯ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããå¿ èŠããããŸãããã®åŸãããŸããŸãªãã¬ãŒã ã¯ãŒã¯ãèªç±ã«è©ŠããŠãã©ããæé©ãã確èªããããå£ããå Žåã¯å¥ã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŸãã
ãããã
@utanãªãã»ã©ãã¢ããªå šäœããã®ãã¬ãŒã ã¯ãŒã¯ïŒã¢ããã¿ãŒãªã©ïŒã§èšè¿°ãããããããã¬ãŒã ã¯ãŒã¯ããå¥ã®ãã¬ãŒã ã¯ãŒã¯ã«åãæ¿ããããã®ãã©ã³ã¹ãã©ãŒããŒã ãšæã£ãŠããŸããã ãããå®éã«ã¯ãã¢ããªå šäœãprimusã§èšè¿°ããããã¬ãŒã ã¯ãŒã¯ã«ã·ãŒã ã¬ã¹ã«åãæ¿ããããã®ãã©ã³ã¹ãã©ãŒããŒã§ãã
確ãã«ãããªãã¯ç§ã®é ãäžããŸãã..ç§ã¯éããç¥ãã®ã«ããã»ã©çç·ŽããŠããŸãããç§ãã¡ãåãããšã«ã€ããŠè©±ããŠãããšæã£ãŠããŸãã..
ããããã
ç§ã®ãµãŒããŒãã°ïŒ
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
ã¯ã©ã€ã¢ã³ããåæããŸãã åæã®çç±ïŒããã©ã³ã¹ããŒãã¯ããŒãºã
倧èŠæš¡ãªæžãæãã䌎ãwsïŒhttps://github.com/websockets/wsïŒã«åãæ¿ããŸããããã¯ã©ã€ã¢ã³ãåŽã§ãã€ãã£ãã®WebSocketãã©ãŠã¶ãŒãªããžã§ã¯ãã䜿çšããããã«ãªãããã¹ãŠãå®å šã«æ©èœããŸãã ããåé¡ã¯ãããŸããã ãšãŠãé·ãsocket.ioïŒ
10ã30ååŸã«ã©ã³ãã ã«åæãããŠããŸããã ç§ã®ãã¹ãã£ã³ã°ãµãŒãã¹ã¯ãApacheå ±æãµãŒããŒäžã§Passengerã䜿çšããŠNodeJSãå®è¡ããŠããããšãæãåºããŸããã ç§ã¯ãããæ¬åœã«ç解ããŠããŸããããåºæ¬çã«ãã®çš®ã®çµ±åã§ã¯WebSocketã«åé¡ãããããšãæå³ããŸãã ãã©ã³ã¹ããŒããèšå®ããŠãã¹ãããŠããŸãïŒ['polling']ã®ã¿ãããŒã«ã«ãã¹ãã§ã¯ãã©ã³ã¹ããŒãïŒ['websockets'ã 'polling']ã䜿çšããŠãšã©ãŒãããããã¢ãŠããªãã§å®è¡ããŠããŸãã ãããŸã§ã®ãšããã30ååŸã«ã¯è¯å¥œã§ã...