Socket.io: ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ 지속적인 "전솑 μ’…λ£Œ"

에 λ§Œλ“  2017λ…„ 08μ›” 03일  Β·  48μ½”λ©˜νŠΈ  Β·  좜처: socketio/socket.io

λ‚˜λŠ” socket.io v.1.4.5 w expressλ₯Ό μ„€μ •ν–ˆκ³  ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„€λͺ…ν•  수 μ—†λŠ” μ—°κ²° λŠκΉ€μ˜ 원인을 좔적할 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ˜ μ—°κ²° 끊기 μ΄λ²€νŠΈκ°€ μ œκ³΅ν•˜λŠ” μ΄μœ λŠ” "전솑 μ’…λ£Œ"μž…λ‹ˆλ‹€. 일뢀 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œλŠ” 맀우 μΌκ΄€λ˜κ²Œ λ°œμƒν•©λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‹œκ°„ κ°„κ²©μœΌλ‘œ λ³΄μ΄λŠ” 것에 λŒ€ν•΄ "전솑 λ‹«κΈ°" 연결이 λŠμ–΄μ§€λŠ” 것에 λŒ€ν•œ μ„€λͺ…이 μžˆμŠ΅λ‹ˆκΉŒ? ν΄λΌμ΄μ–ΈνŠΈλŠ” μž¬μ ‘μ†μ€ 잘 λ˜μ§€λ§Œ λ„ˆλ¬΄ 자주 λ°œμƒν•˜κΈ° λ•Œλ¬Έμ— 맀우 λΆˆνŽΈν•©λ‹ˆλ‹€.

pingInterval, pingTimeout 및 μ›Ή μ†ŒμΌ“μš© 포트 λ³€κ²½κ³Ό 같은 λ‹€μ–‘ν•œ 섀정을 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€(ν˜„μž¬ 포트 80을 μ‚¬μš© μ€‘μž…λ‹ˆλ‹€). ν•˜μ§€λ§Œ 아무리 생각해도 λ¬Έμ œλŠ” 사라지지 μ•ŠμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

Google Cloud Platform(GCP)에 λ°°ν¬ν•œ ν›„ 30μ΄ˆλ§ˆλ‹€ socket.io 연결이 λŠμ–΄μ§€λŠ” λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. Global Load Balancerμ—μ„œ μ‚¬μš©ν•˜λŠ” κΈ°λ³Έ http μ‹œκ°„ 초과둜 판λͺ…λ˜μ—ˆμŠ΅λ‹ˆλ‹€. GCP λ¬Έμ„œμ—λŠ” μ›Ή μ†ŒμΌ“μ„ μ‚¬μš©ν•  λ•Œ 값을 λ³€κ²½ν•΄μ•Ό ν•œλ‹€κ³  λ‚˜μ™€ μžˆμŠ΅λ‹ˆλ‹€. μ„€μ • λ³€κ²½ 지침은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
https://cloud.google.com/load-balancing/docs/backend-service#timeout -μ„€μ •

λͺ¨λ“  48 λŒ“κΈ€

socket.io v2.0.3으둜 μ—…λ°μ΄νŠΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ—¬μ „νžˆ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ PC 쀑 ν•˜λ‚˜μ—μ„œλ§Œ λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. Windows 방화벽도 λΉ„ν™œμ„±ν™”ν–ˆμ§€λ§Œ λ¬Έμ œκ°€ 계속 λ°œμƒν•©λ‹ˆλ‹€.

λŒ€κ·œλͺ¨ μž¬μž‘μ„±μ„ ν¬ν•¨ν•˜λŠ” ws(https://github.com/websockets/ws)둜 μ „ν™˜ν–ˆμ§€λ§Œ 이제 ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ κΈ°λ³Έ websocket λΈŒλΌμš°μ € 개체λ₯Ό μ‚¬μš©ν•˜κ³  λͺ¨λ“  것이 μ™„λ²½ν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€. 더 이상 λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€. μ˜€λžœλ§Œμ΄λ‹€ socket.io!

같은 일을 κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” μ •λ§λ‘œ μž¬μž‘μ„±μ„ 거쳐야 ν•˜λŠ” 것을 μ›ν•˜μ§€ μ•ŠλŠ”λ‹€. 이 문제둜 μ„±κ³΅ν•œ μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” 이 λ¬Έμ œμ— 정말 지쳀닀.
"socket.io-client"둜 "socket.io" 버전을 확인해야 ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ 버전이 μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ 연결이 맀우 λΆˆμ•ˆμ •ν•©λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ•„λž˜μ™€ 같이 λ‹¨μˆœνžˆ CDN을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œμ— λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆλ‹€. λ˜‘κ°™μ€ λ¬Έμ œκ°€ 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€!

k8ns에 배포할 λ•Œλ„ λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ§€λ§Œ 둜컬둜 μ‹€ν–‰ν•˜λ©΄ μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

저도 μ΄κ²ƒλ•Œλ¬Έμ— κ΄΄λ‘œμ›Œμš”...

@talas9 @muhammadnasr @htamop 문제λ₯Ό 디버그/μž¬ν˜„ν•  수 μžˆλŠ” 일반적인 질문:

  • μ–΄λ–€ λ²„μ „μ˜ ν΄λΌμ΄μ–ΈνŠΈ/μ„œλ²„λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?
  • μ–΄λ–€ λΈŒλΌμš°μ €?
  • λ°”μ΄μ˜¬λ¦°μœΌλ‘œ μž¬ν˜„ κ°€λŠ₯ν•©λ‹ˆκΉŒ?

감사 ν•΄μš”!

λ‚˜λŠ” 2.1.0κ³Ό 2.0.4 ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ—μ„œ 그것을 μ‹œλ„ν–ˆλ‹€. 크둬 및 μ‚¬νŒŒλ¦¬(μ΅œμ‹ ).
λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•˜λ©΄ 잘 μž‘λ™ν•˜μ§€λ§Œ(μ—°κ²° ν•΄μ œ 없이 1μ‹œκ°„ 이상 μ—°κ²°ν•  수 있음) μˆ˜μ‹  λ‘œλ“œ λ°ΈλŸ°μ„œ 뒀에 μžˆλŠ” K8ns에 λ°°ν¬ν•˜λ©΄ 이 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€...

참고둜 연결은 맀번 μ •ν™•νžˆ 25초 후에 λ‹«νž™λ‹ˆλ‹€. μŠ€ν¬λ¦°μƒ· μ°Έμ‘°

@talas9 @htamop @dnwldbs84 λ‘œλ“œλ°ΈλŸ°μ„œλ₯Ό μ‚¬μš©ν•˜κ³  κ³„μ‹ κ°€μš”?

@darrachequesne socket.io 와 ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” 것을 ꢌμž₯ν•˜λŠ” λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

@muhammadnasr @darrachequesne
2.1.0 μ„œλ²„μ™€ 1.0.0 ν΄λΌμ΄μ–ΈνŠΈ(μ•ˆλ“œλ‘œμ΄λ“œ)λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.
8~9μ‹œκ°„ λ™μ•ˆ 연결을 μ•ˆμ •μ μœΌλ‘œ μœ μ§€ν•΄μ•Ό ν•˜μ§€λ§Œ 예기치 μ•Šκ²Œ 연결이 λŠμ–΄μ§‘λ‹ˆλ‹€.
두 버전을 λͺ¨λ‘ 1.7.4와 0.8.3으둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆκΉŒ? λ‹€λ₯Έ μ†”λ£¨μ…˜ κ²Œμ‹œλ¬Όμ— λ”°λ₯΄λ©΄. 내일 잘되면 ν…ŒμŠ€νŠΈ ν•΄λ΄μ•Όκ² μŠ΅λ‹ˆλ‹€

λ‘œλ“œ λ°ΈλŸ°μ„œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„ λͺ¨λ‘ 2.0.3 λ²„μ „μ˜ Socket.ioλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€(μ‚¬μš©ν•œ λͺ¨λ“  버전을 κΈ°μ–΅ν•  수 μ—†μŒ). μ–΄λ–€ λΈŒλΌμš°μ €κ°€ 문제λ₯Ό μΌμœΌν‚€λŠ”μ§€ λͺ¨λ₯΄μ§€λ§Œ λŒ€λΆ€λΆ„μ˜ μ‚¬μš©μžλŠ” Chrome을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. 제 경우 μ—°κ²° λŠκΉ€μ΄ 랜덀이라 μž¬μƒμ΄ μ•ˆλ˜λ„€μš”.
그리고 λ‚˜λŠ” ws둜 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆλŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

@muhammadnasr @darrachequequesne @dnwldbs84
제 κ²½μš°μ—λŠ” ν•΄κ²°λ˜μ—ˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
Android ν¬κ·ΈλΌμš΄λ“œ μ„œλΉ„μŠ€(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 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 8~9μ‹œκ°„ 후에 "전솑 μ’…λ£Œ"둜 인해 μ†ŒμΌ“μ΄ λŠμ–΄μ§‘λ‹ˆλ‹€.

λ‚˜λŠ” μ‚¬μš©ν•˜κ³ μžˆλ‹€ :

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 및 NGINX Ingress Controllerμ—μ„œ μ‹€ν–‰ν•  λ•Œ socket.io와 λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.
nginx ꡬ성이 λ‹€μ‹œ λ‘œλ“œλ˜λ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€μ‹œ μƒμ„±λ˜κ³  κΈ°μ‘΄ 톡신이 λͺ¨λ‘ μ‚­μ œλ˜μ–΄ transport close , μˆ˜μ‹  컨트둀러λ₯Ό μ‚¬μš©ν•˜λŠ” λ‹€λ₯Έ 배포둜 인해 ꡬ성이 λ‹€μ‹œ λ‘œλ“œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

μš°μ„  이 멋진 ν”„λ‘œμ νŠΈμ— 정말 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ μƒˆλ‘œμš΄ 것을 κ°€μ Έμ˜¬ κ²ƒμž…λ‹ˆλ‹€.

λ…Έλ“œ js에 ws μ„œλ²„μ™€ ws ν΄λΌμ΄μ–ΈνŠΈκ°€ μžˆμŠ΅λ‹ˆλ‹€.
이 ws ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλΉ„μŠ€(마이크둜 μ„œλΉ„μŠ€)인 node js μ•±μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

μ›Ή λΈŒλΌμš°μ €μ˜ λ‹€λ₯Έ ws ν΄λΌμ΄μ–ΈνŠΈ(ν΄λΌμ΄μ–ΈνŠΈ μ•±)λŠ” ws μ„œλ²„λ₯Ό 톡해 이 node js μ„œλΉ„μŠ€μ™€ ν†΅μ‹ ν•©λ‹ˆλ‹€.

λͺ¨λ“  것이 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

ν˜„μž¬ 슀트레슀 ν…ŒμŠ€νŠΈμ—μ„œ(10λͺ…μ˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ§‘μ€‘μ μœΌλ‘œ 데이터λ₯Ό μš”μ²­ν•˜κ³  있음) ν…ŒμŠ€νŠΈκ°€ λλ‚˜λ©΄ λͺ¨λ“  μž‘μ—…κ³Ό νŠΈλžœμž­μ…˜μ΄ μ™„λ£Œλ˜λ©΄ μ„œλΉ„μŠ€ 연결이 "전솑 λ‹«κΈ°" 였λ₯˜μ™€ ν•¨κ»˜ λ‹«νž™λ‹ˆλ‹€. 이것은 항상 λ°œμƒν•˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.

λ‹€μŒμ€ μ„œλ²„ κ΅¬μ„±μž…λ‹ˆλ‹€.
ν•‘νƒ€μž„μ•„μ›ƒ: 15000,
ν•‘ 간격: 20000,
λ‘œλ“œκ°€ λ§Žμ€ λ™μ•ˆ 일뢀 핑이 μ†μ‹€λœ 것 κ°™μŠ΅λ‹ˆλ‹€...? λ˜λŠ” λ‚˜λŠ” λͺ¨λ₯Έλ‹€.
이것은 λ‚΄κ°€ κΈ°λŒ€ν•΄μ•Ό ν•˜λŠ” κ²ƒμž…λ‹ˆκΉŒ?

λ˜ν•œ κΈ°λ³Έ ꡬ성인 pingTimeout: 2000을 μ‚¬μš©ν•˜λ©΄ 슀트레슀 ν…ŒμŠ€νŠΈ 도쀑에 이 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 이 λ˜ν•œ μ™„μ „νžˆ μ˜ˆμƒμΉ˜ λͺ»ν•œ μΌμ΄μ§€λ§Œ μ„œλ²„μ— κ³ΌλΆ€ν•˜κ°€ κ±Έλ € 2초(!) 이내에 응닡할 수 μ—†κ³  이 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλ‹€κ³  κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이제 pingTimeout: 15000을 μ‚¬μš©ν•˜λ©΄ 거의 50%κ°€ λ°œμƒν•˜λ©° ν…ŒμŠ€νŠΈκ°€ λλ‚œ ν›„μ—λ§Œ λ°œμƒν•©λ‹ˆλ‹€.

흠, λ‚˜λŠ” 마이크둜 μ„œλΉ„μŠ€κ°€ 같은 λžœμ—μ„œ μ‹€ν–‰λ˜λ”λΌλ„ 이런 μ’…λ₯˜μ˜ 였λ₯˜λ₯Ό μ˜ˆμƒν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ, μ§ˆλ¬Έμ€ μ™œ 이런 일이 λ°œμƒν•˜λŠ” κ²ƒμž…λ‹ˆκΉŒ?

이 문제λ₯Ό μž¬ν˜„ν•˜κΈ° μœ„ν•΄ μž‘μ€ 섀정을 λ§Œλ“€λ €κ³  ν–ˆμ§€λ§Œ λ§Œλ“€μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

둜그λ₯Ό ν™œμ„±ν™”ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? DEBUG=socket.io*κ°€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ³€μˆ˜κ°€ μ„€μ •λ˜μ–΄ μžˆμ–΄λ„ 좜λ ₯이 λ‚˜μ˜€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 #2924와 관련이 μžˆλ‹€κ³  κ°•λ ₯ν•˜κ²Œ λ―ΏλŠ”λ‹€.
ν΄λΌμ΄μ–ΈνŠΈμ˜ μž¬μ—°κ²°μ€ 배터리λ₯Ό μ ˆμ•½ν•˜κΈ° μœ„ν•΄ λΉ„ν™œμ„±ν™”λœ 탭에 λŒ€ν•œ 일뢀 λΈŒλΌμš°μ €(safari 및 chrome) 쑰절 νƒ€μ΄λ¨Έλ‘œ 인해 λ°œμƒν•©λ‹ˆλ‹€.
κ·Έ κ²°κ³Ό pingTimeout으둜 인해 연결을 λ‹«λŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ μ§€μ—°λœ ν•˜νŠΈλΉ„νŠΈ λ©”μ‹œμ§€κ°€ μƒμ„±λ©λ‹ˆλ‹€.
pingTimeout을 늘리면 μ–΄λŠ 정도 μž‘λ™ν•˜μ§€λ§Œ μ—¬μ „νžˆ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ λ‹€μ‹œ μ—°κ²°λ©λ‹ˆλ‹€.

k8ns에 배포할 λ•Œλ„ λ™μΌν•œ λ¬Έμ œκ°€ μžˆμ§€λ§Œ 둜컬둜 μ‹€ν–‰ν•˜λ©΄ μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

@muhammadnasr μ–΄λ””μ„œ

@ bheema01 ν”„λ‘μ‹œ/λ‘œλ“œ λ°ΈλŸ°μ„œμ—μ„œstickysession이 ν™œμ„±ν™”λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜κ³  μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€.

같은 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€

λ™μΌν•œ 문제 ..... μ„œλ²„ μΈ‘ μ†ŒμΌ“ 끝점이 λ‘œλ“œ λ°ΈλŸ°μ„œ 뒀에 μžˆμ„ λ•Œ ν΄λΌμ΄μ–ΈνŠΈκ°€ 반볡적으둜 μ—°κ²° 및 μ—°κ²° ν•΄μ œλ©λ‹ˆλ‹€. κ³ μ • μ„Έμ…˜μ„ κ΅¬μ„±ν•œ 후에도 λ¬Έμ œκ°€ μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€. @muhammadnasr 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

μŠ€λ ˆλ“œκ°€ 200ms 이상 자주 차단될 λ•Œ 이 였λ₯˜λ₯Ό λ³΄μ•˜μŠ΅λ‹ˆλ‹€.
이런 일이 자주 λ°œμƒν•˜λ©΄ socket.io _및 앱에도 _ 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€.
socket.ioμ—λŠ” μ—°κ²°μ˜ ν•˜νŠΈλΉ„νŠΈλ₯Ό ν™•μΈν•˜κΈ° μœ„ν•œ μ‹œκ°„ μ΄ˆκ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.
이 μ‹œκ°„ μ΄ˆκ³Όκ°€ 초과되면 연결이 μ’…λ£Œλ˜κ³  이 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

@varunSabnis λŠ” κ³ μ • μ„Έμ…˜μ„ μˆ˜μ •ν•œ ν›„ λͺ¨λ“  것이 μ›ν™œν•˜κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

@dennisat λ‚΄ ν΄λΌμ΄μ–ΈνŠΈκ°€ 퐁 νŒ¨ν‚·μ„ μˆ˜μ‹ ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μ„ ν™•μΈν•˜λ €κ³  ν–ˆμŠ΅λ‹ˆλ‹€. 200msλ₯Ό μ΄ˆκ³Όν•  λ•Œλ§ˆλ‹€ ν΄λΌμš°λ“œμ˜ μ†ŒμΌ“ μ„œλ²„μ™€ λ‚΄ 둜컬 호슀트의 μ†ŒμΌ“ μ„œλ²„μ—μ„œ λͺ¨λ‘ ν…ŒμŠ€νŠΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 둜컬 섀정은 μ†ŒμΌ“μ˜ 연결을 λŠμ§€ μ•ŠμŠ΅λ‹ˆλ‹€(λͺ¨λ“  것이 잘 μž‘λ™ν•¨). 반면 ν΄λΌμš°λ“œ μ„€μ •μ—μ„œλŠ” μ†ŒμΌ“μ΄ μ§€μ†μ μœΌλ‘œ μ—°κ²° 및 μ—°κ²° ν•΄μ œλ©λ‹ˆλ‹€. κ·Έλž˜μ„œ, λ‚˜λŠ” 그것이 문제라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
@muhammadnasr μ•Œμ•˜μ–΄, λŒ€λ‹¨ν•΄. μ‹€μ œλ‘œ ν™œμ„±ν™”ν–ˆμ§€λ§Œ μ—¬μ „νžˆ λͺ‡ 가지 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

@muhammadnasr @darrachequequesne @dnwldbs84
제 κ²½μš°μ—λŠ” ν•΄κ²°λ˜μ—ˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
Android ν¬κ·ΈλΌμš΄λ“œ μ„œλΉ„μŠ€(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});

그것은 λ§ˆλ²•μ²˜λŸΌ μž‘λ™ν•©λ‹ˆλ‹€, κ°μ‚¬ν•©λ‹ˆλ‹€!!!!!!!

ν•‘ κ°„κ²©λ§ˆλ‹€ '전솑 μ’…λ£Œ'κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이 λ¬Έμ œμ— 정말 지쳀닀.
"socket.io-client"둜 "socket.io" 버전을 확인해야 ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ 버전이 μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ 연결이 맀우 λΆˆμ•ˆμ •ν•©λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈλŠ” μ•„λž˜μ™€ 같이 λ‹¨μˆœνžˆ CDN을 μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

bleepcoder.com은 곡개적으둜 λΌμ΄μ„ μŠ€ 된 GitHub 정보λ₯Ό μ‚¬μš©ν•˜μ—¬ μ „ 세계 κ°œλ°œμžμ—κ²Œ λ¬Έμ œμ— λŒ€ν•œ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” GitHub, Inc. λ˜λŠ” ν”„λ‘œμ νŠΈμ— GitHubλ₯Ό μ‚¬μš©ν•˜λŠ” λ‹€λ₯Έ κ°œλ°œμžμ™€ 관련이 μ—†μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” μ„œλ²„μ—μ„œ λΉ„λ””μ˜€ λ‚˜ 이미지λ₯Ό ν˜ΈμŠ€νŒ…ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λͺ¨λ“  κΆŒλ¦¬λŠ” ν•΄λ‹Ή μ†Œμœ μžμ—κ²Œ μžˆμŠ΅λ‹ˆλ‹€.
이 νŽ˜μ΄μ§€μ˜ μ†ŒμŠ€: 좜처

μΈκΈ°μžˆλŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
μΈκΈ°μžˆλŠ” GitHub ν”„λ‘œμ νŠΈ
더 λ§Žμ€ GitHub ν”„λ‘œμ νŠΈ

Β© 2024 bleepcoder.com - Contact
Made with in the Dominican Republic.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.