Socket.io: νŽ˜μ΄μ§€μ— 초점이 λ§žμ§€ μ•Šμ„ λ•Œ λΉ„ν™œμ„±μœΌλ‘œ 인해 Safariμ—μ„œ μ›Ή μ†ŒμΌ“ 연결을 끊음

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

당신은 :

  • [x] 버그보고
  • [] κΈ°λŠ₯ μš”μ²­

ν˜„μž¬ 행동

이것이 μ•Œλ €μ§„ λ¬Έμ œμΈμ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (검색을 μ‹œλ„ν–ˆμ§€λ§Œ 아무것도 찾지 λͺ»ν•¨). Mac 용 SafariλŠ” νŽ˜μ΄μ§€ / 탭에 초점이 λ§žμ§€ μ•ŠλŠ” 경우 λΉ„ν™œμ„± / 유휴둜 인해 μ›Ή μ†ŒμΌ“ 연결을 μžλ™μœΌλ‘œ λŠλŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

μž¬ν˜„ 단계 (ν˜„μž¬ λ™μž‘μ΄ 버그 인 경우)

Safari νƒ­ / νŽ˜μ΄μ§€μ— μ΄ˆμ μ„ λ§žμΆ”μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. websocket 이벀트λ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€.

μ˜ˆμƒλ˜λŠ” 행동

μ›Ή μ†ŒμΌ“μ€ ν•˜νŠΈ λΉ„νŠΈ κΈ°λŠ₯을 톡해 μœ μ§€λ˜μ–΄μ•Όν•©λ‹ˆλ‹€. λ‹€λ₯Έ λΈŒλΌμš°μ €μ—μ„œλŠ”μ΄ λ™μž‘μ΄ 보이지 μ•ŠμœΌλ―€λ‘œ λ‚΄ μ½”λ“œκ°€ 아닐 κ²ƒμž…λ‹ˆλ‹€.

μ„€μ •

  • 운영체제 : Mac OSX 10.12.4 (16E195)
  • λΈŒλΌμš°μ € : Safari 10.1 (12603.1.30.0.34)
  • socket.io 버전 : 1.7.3

기타 정보 (예 : μŠ€νƒ 좔적, κ΄€λ ¨ 문제, ν•΄κ²° 방법 μ œμ•ˆ)

이것이 ν•˜νŠΈ λΉ„νŠΈλ₯Ό λ¬΄μ‹œ / λ¬΄μ‹œν•˜λŠ” μΌμ’…μ˜ μ ˆμ „ κΈ°λŠ₯μΌκΉŒμš”?

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

λ‚˜λŠ” socket.io의 ν˜„μž¬ 버전이 ν΄λΌμ΄μ–ΈνŠΈ 츑의 setTimeout에 μ˜μ‘΄ν•˜κΈ° λ•Œλ¬Έμ— μ˜ˆμƒλ§ŒνΌ μ‹ λ’°ν•  수 없을 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ΄λŠ” μ£Όμš” λ³€κ²½ μ‚¬ν•­μ΄λ―€λ‘œ v3에 포함 ν•  κ²ƒμž…λ‹ˆλ‹€.

κ΄€λ ¨ : https://github.com/primus/primus/issues/348

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

DEBUG = *둜 μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λ©΄ λ‹€μŒμ΄ ν‘œμ‹œλ©λ‹ˆλ‹€.
socket.io:client client close with reason ping timeout +0ms
socket.io:socket closing socket - reason ping timeout +0ms

λ‚˜λŠ” Safariκ°€ μ†ŒμΌ“ μ„œλ²„ λ˜λŠ” ν΄λΌμ΄μ–ΈνŠΈ μΈμŠ€ν„΄μŠ€κ°€ μ•„λ‹ˆλΌ 연결을 λ‹«μ•˜λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ κ°€μž₯ μ΄μƒν•œ 점은 Safari κ°€ μ•½ 30 μ΄ˆμ—μ„œ 1 λΆ„ 후에 λ‹€μ‹œ μ—°κ²°λ˜λŠ” κ²½μš°κ°€ μžˆμ§€λ§Œ λ‹€λ₯Έ κ²½μš°μ—λŠ” νŽ˜μ΄μ§€μ— μ΄ˆμ μ„ 맞좜 λ•ŒκΉŒμ§€ 연결이 끊긴 μƒνƒœλ‘œ μœ μ§€λœλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ μΌκ΄€λ˜μ§€ μ•Šμ€ λ™μž‘μœΌλ‘œ 디버깅을 μ‹œλ„ν•˜κ³  λ””λ²„κΉ…ν•˜λŠ” 것은 맀우 싀망 μŠ€λŸ½μŠ΅λ‹ˆλ‹€.

λ•Œλ‘œλŠ” 훨씬 늦게 (예 : 10 λΆ„) μ‚°λ°œμ μœΌλ‘œ λ‹€μ‹œ μ—°κ²°λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‹€μ‹œ λ§ν•˜μ§€λ§Œ, λ™μΌν•œ ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ μ™„μ „νžˆ μΌμΉ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@twistedpixel 재 μ—°κ²° 지연은 κΈ°ν•˜ κΈ‰μˆ˜μ μž…λ‹ˆλ‹€ (즉, 500ms λŒ€κΈ°, 재 μ—°κ²° μ‹œλ„, 1000ms λŒ€κΈ°, 재 μ—°κ²° μ‹œλ„ ...) ( source ) λ™μž‘μ„ μ„€λͺ… ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

창에 λ‹€μ‹œ 초점이 λ§žμΆ°μ§€λ©΄ κ°•μ œλ‘œ λ‹€μ‹œ μ—°κ²°ν•˜λŠ” 것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

window.addEventListener("focus", () => socket.connect());

https://github.com/primus/primus/issues/348 κ³Ό κ΄€λ ¨μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€

정보λ₯Ό μ œκ³΅ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.ν•˜μ§€λ§Œ μ£Όμš” λ¬Έμ œλŠ” μ›Ή μ†ŒμΌ“μ΄ μ‚¬μš©μžκ°€μ—†λŠ” λ™μ•ˆ μ‚¬μš©μžμ—κ²Œ κ²½κ³ λ₯Ό λ³΄λ‚΄λŠ” 데 μ‚¬μš©λ˜κΈ° λ•Œλ¬Έμ— 영ꡬ적으둜 μ—°κ²°λœ μ›Ή μ†ŒμΌ“μ΄ ν•„μš”ν•˜λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ λ‹€μ‹œ μ—°κ²°ν•˜κΈ°μœ„ν•œ μ°½ ν¬μ»€μŠ€λŠ” 이상적이지 μ•ŠμŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  λ‚΄ 컴퓨터 / μ„€μΉ˜μ— μ‹€μ œλ‘œ 더 λ¬Έμ œκ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ‚˜λŠ” μ›λž˜ iMacμ—μ„œ λ™μž‘μ„ λ°œκ²¬ν–ˆκΈ° λ•Œλ¬Έμ— MacBook을 μƒˆ λ²„μ „μ˜ Safari둜 μ§€μš°κΈ°λ‘œ κ²°μ •ν–ˆμ§€λ§Œ μ „ν˜€ λ™μž‘μ΄ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€. ν•˜λ£¨ 쒅일 탭을 μ΅œμ†Œν™” ν•œ μƒνƒœλ‘œ 두 μ—ˆλŠ”λ° ν•œ λ²ˆλ„ 연결이 λŠμ–΄μ§€μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ iMac으둜 λŒμ•„κ°€ λͺ¨λ“  인터넷 ν”ŒλŸ¬κ·ΈμΈμ„ μ œκ±°ν•˜κ³  λͺ¨λ“  ν™•μž₯ κΈ°λŠ₯을 λΉ„ν™œμ„±ν™”ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ μ—¬μ „νžˆμ΄ λ™μž‘μ„ λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

Apple은 ν™˜κ²½ μ„€μ • 및 νŠΉμ • 기타 νŒŒμΌμ„ μ‚­μ œν•˜λŠ” 것 μ™Έμ—λŠ” Safariλ₯Ό μ™„μ „νžˆ μž¬μ„€μΉ˜ν•˜λŠ” 방법을 μ œκ³΅ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ˜λŠ” 기계λ₯Ό λ‹¦μœΌμ‹­μ‹œμ˜€. λ‚΄ μΌλΆ€λŠ” μƒˆλ‘œ μ‹œμž‘ν•˜κ³  μ‹Άμ§€λ§Œ λ‚΄ μ•ˆμ˜ κ°œλ°œμžλŠ” 원인이 무엇인지 λͺ¨λ₯΄λŠ” 것을 μ‹«μ–΄ν•  κ²ƒμž…λ‹ˆλ‹€.

사싀, κΈ°ν•˜ κΈ‰μˆ˜μ  인 재 연결에 λŒ€ν•œ κ·€ν•˜μ˜ μš”μ  : ν™•μ‹€νžˆ 첫 번째 재 연결은 μ—°κ²° ν•΄μ œ ν›„ μ•½ 500msκ°€ 될 κ²ƒμž…λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ„œλ²„κ°€μ΄λ₯Ό λ¬΄μ‹œν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? 재 연결을 λ°©ν•΄ν•˜λŠ” 무언가가 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

μ—°κ²° 끊기 μ΄λ²€νŠΈμ— socket.connect() λ₯Ό 뢙이면 λ‹€μ‹œ μ—°κ²°λ˜κΈ° λ•Œλ¬Έμ— μ•½κ°„ μ΄μƒν•©λ‹ˆλ‹€. λͺ‡ λΆ„λ§ˆλ‹€ν•΄μ•Όν•˜μ§€λ§Œ μ—¬μ „νžˆ μ‹€νŒ¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ 재 연결이 μΌμ–΄λ‚˜μ§€ μ•ŠλŠ” μ΄μœ μ— λŒ€ν•΄ μ™„μ „νžˆ μ˜μ•„ν•΄ν•©λ‹ˆλ‹€! μ’€ 더 νŒŒν—€μ³ μ„œ κ·Έ 이유λ₯Ό μ•Œμ•„λ‚Ό 수 μžˆλŠ”μ§€ μ‚΄νŽ΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

이것은 λΆˆν–‰νžˆλ„ μ˜€λŠ˜λ‚  λ°μŠ€ν¬ν†±μ—μ„œλ„ 일반적인 λΈŒλΌμš°μ € λ™μž‘μž…λ‹ˆλ‹€.

무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ μ•Œ 것 κ°™μ•„μš”. μ‚¬νŒŒλ¦¬κ°€ μ‹€μ œλ‘œ λ¬Έμ œμž…λ‹ˆλ‹€.

탭에 초점이 λ§žμ§€ μ•Šμ„ λ•Œ λͺ¨λ“  λΈŒλΌμš°μ €κ°€ setTimeout 및 setInterval 값을 1000으둜 μ œν•œν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μ‚¬νŒŒλ¦¬-μ–΄λ¦¬μ„κ²Œλ„-1000으둜 μ œν•œ ν•˜κ³  κΈ°ν•˜ κΈ‰μˆ˜μ μœΌλ‘œ 지연을 μΆ”κ°€ν•˜λŠ” 것과 같은 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ—¬ 각 반볡이 λ§ˆμ§€λ§‰λ§ŒνΌ 두 λ°°κ°€ κ±Έλ¦½λ‹ˆλ‹€. 이것이 연결이 λŠμ–΄μ§€λŠ” μ΄μœ μž…λ‹ˆλ‹€. socket.io의 λ‚΄λΆ€ μ‹œκ°„ μ΄ˆκ³Όκ°€ 지연 / μ‚­μ œλ˜μ–΄ 재 연결이 ν•„μš”ν•œ μ‹œμ μ— λ°œμƒν•˜μ§€ μ•ŠλŠ” 이유λ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ 기본적으둜 Apple은 ν‰μ†Œμ™€ 같이 곑물에 λ°˜λŒ€ν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜μ„ μ €ν•˜ μ‹œν‚€κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€. μš”μ¦˜μ€ 정말 μž˜ν•΄μš”.

λ‚˜λŠ” 그것이 MacBook이 μ•„λ‹Œ iMac에 영ν–₯을 λ―ΈμΉ˜λŠ” 이유λ₯Ό λ°œκ²¬ν•˜μ§€ λͺ»ν–ˆμ§€λ§Œ (μ—­λ°©ν–₯을 μ˜ˆμƒν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€) μ •ν™•ν•œ 이유λ₯Ό μ •ν™•νžˆ 찾을 수 μžˆλŠ”μ§€ 계속 ν…ŒμŠ€νŠΈν•˜κ³  λ³Ό κ²ƒμž…λ‹ˆλ‹€.

@twistedpixel 그것은 μ‚¬νŒŒλ¦¬ 뿐만이 μ•„λ‹™λ‹ˆλ‹€. http://blog.strml.net/2017/01/chrome-56-now-aggressively-throttles.html μ°Έμ‘°

Primusμ—μ„œ μš°λ¦¬λŠ” ν•˜νŠΈ λΉ„νŠΈ λ©”μ‹œμ§€ (https://github.com/primus/primus/pull/534)의 λ°©ν–₯을 λ°”κΎΈμ–΄ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

@lpinca 이 문제λ₯Ό μ•Œμ•„ λ‚΄λ €κ³  μ• μ“°λ˜ λ‚΄λ‚΄ μ €λŠ” 그게 κΆκΈˆν–ˆμŠ΅λ‹ˆλ‹€. 정보에 λŒ€ν•΄μ„œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€! μ €λŠ” Primusλ₯Ό μ‚΄νŽ΄ λ³΄μ•˜μ§€λ§Œ κ·Έλ ‡κ²Œ 빨리 전체 μ½”λ“œλ² μ΄μŠ€λ₯Ό λ¦¬νŒ©ν† λ§ ν•  ν•„μš”κ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜λ„ λ…Έλ ₯ν• λ§Œν•œ κ°€μΉ˜κ°€μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€.

@twistedpixel λ‚΄ μš”μ μ€

FWIW, Safari Tech PreviewλŠ” μΆ”κ°€ μ œν•œμ˜ 영ν–₯을받지 μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ μ• ν”Œμ€ κ·Έλ“€μ˜ 결정을 λ’€μ§‘μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. μ—¬μ „νžˆ 1000ms둜 쑰절 μ€‘μ΄μ§€λ§Œ 더 이상 μΆ”κ°€ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

iOS 12 Safariμ—μ„œ λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. λ‚΄ μ‚¬νŒŒλ¦¬λ₯Ό λ‹€μ‹œ μ—΄λ©΄ μ›Ή μ†ŒμΌ“ 연결이 λŠμ–΄μ§‘λ‹ˆλ‹€. μ†ŒμΌ“μ„ μœ μ§€ν•˜κΈ°μœ„ν•œ κΉ¨λ—ν•œ ν•΄κ²° 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

AFAIK iOS SafariλŠ” Safariκ°€ λ°±κ·ΈλΌμš΄λ“œμ—μžˆμ„ λ•Œ (배터리 μ†Œλͺ¨λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄) νŠΉμ • ν”„λ‘œμ„ΈμŠ€λ₯Ό μΌμ‹œ μ€‘λ‹¨ν•˜κ³  μ›Ή μ†ŒμΌ“ 연결은 거의 ν™•μ‹€νžˆ κ·ΈλŸ¬ν•œ ν”„λ‘œμ„ΈμŠ€ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. λͺ¨λ°”일 μž₯μΉ˜μ—μ„œ ν•΄κ²° 방법을 찾을 κ°€λŠ₯성은 거의 μ—†μŠ΅λ‹ˆλ‹€.

확인. ν•˜μ§€λ§Œ onwindowfocus 같은 이벀트 λ¦¬μŠ€λ„ˆλ₯Ό 좔가해도 λ‹€μ‹œ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

ν•΄κ²° 방법을 κ΅¬ν˜„ ν•œ μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ? μš°λ¦¬λŠ” μ˜΅μ…˜μ„ μ‚΄νŽ΄λ³΄κ³  λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 이미 μ‹€ν—˜ν•˜κ³  μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

포컀슀 이벀트λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹  Page Visibility API λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ°”일 μ•± 창이 λ°±κ·ΈλΌμš΄λ“œλ‘œ ν‘œμ‹œλ˜λŠ”μ‹œκΈ°λ₯Ό κ°μ§€ν•΄μ•Όν•©λ‹ˆλ‹€.

λ‚˜λŠ” Azure SignalR의 λ¬Έμ œμ— λΆ€λ”ͺ ν˜”κ³  ν˜„μž¬ νŽ˜μ΄μ§€ κ°€μ‹œμ„± APIλ₯Ό μ‚¬μš©ν•˜μ—¬ νŽ˜μ΄μ§€ μˆ¨κΈ°κΈ°μ—μ„œ 연결을 λ‹«κ³  νŽ˜μ΄μ§€κ°€ ν‘œμ‹œ 될 λ•Œ λ‹€μ‹œ μ—°κ²°ν•˜λŠ”

μ†”λ£¨μ…˜

이 μ„Έ 가지 λΈŒλΌμš°μ € λͺ¨λ‘μ—μ„œ pingTimeout & pingInterval 값을 λ³€κ²½ν•˜μ—¬ λͺ‡ μ‹œκ°„ λ™μ•ˆ ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ 찾은 ν•΄κ²°μ±… :

  1. pingTimeout > = 30000 ms μ„€μ •

    • λ˜λŠ”-

  2. pingInterval <= 10000 ms μ„€μ •

pingTimeout = 30000 λ³€κ²½ν•˜λŠ” 것이 κ°€μž₯ 쒋은 μ†”λ£¨μ…˜μ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€. κΈ°λ³Έ pingInterval λŠ” 25000 ms이며 ν΄λΌμ΄μ–ΈνŠΈλ₯Ό 10 μ΄ˆλ§ˆλ‹€ ν•‘ν•˜λŠ” μ„œλ²„μ˜ λΉˆλ„λ₯Ό λŠ˜λ¦¬λŠ” 것은 _at scale_ ν”„λ‘œμ νŠΈμ— λŒ€ν•΄ λ„ˆλ¬΄ μˆ˜λ‹€ 슀러울 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” socket.io의 ν˜„μž¬ 버전이 ν΄λΌμ΄μ–ΈνŠΈ 츑의 setTimeout에 μ˜μ‘΄ν•˜κΈ° λ•Œλ¬Έμ— μ˜ˆμƒλ§ŒνΌ μ‹ λ’°ν•  수 없을 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ΄λŠ” μ£Όμš” λ³€κ²½ μ‚¬ν•­μ΄λ―€λ‘œ v3에 포함 ν•  κ²ƒμž…λ‹ˆλ‹€.

κ΄€λ ¨ : https://github.com/primus/primus/issues/348

@darrachequesne λ‚˜λŠ” λ˜ν•œ νœ΄λŒ€ μ „ν™” 화면이 λŒ€κΈ° μƒνƒœλ‘œ μ „ν™˜λ˜κ³  λͺ¨λ°”μΌμ—μ„œ λΈŒλΌμš°μ €λ₯Ό λ‹€μ‹œ μ—΄λ©΄ μ†ŒμΌ“ ioκ°€ μ±„νŒ… 연결을 λŠμŠ΅λ‹ˆλ‹€. plz이 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€. 그것은 큰 μ•ˆλ„κ°μ΄ 될 κ²ƒμž…λ‹ˆλ‹€.

μ†ŒμΌ“ io의이 버그에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λ‚΄ μ•±μ—μ„œ μ‚¬μš©μžκ°€ λͺ¨λ°”일 λΈŒλΌμš°μ €μ—μ„œ νŒŒμΌμ„ μ—…λ‘œλ“œν•˜λ €κ³  ν•  λ•Œ μ—…λ‘œλ“œ λŒ€ν™” μƒμžκ°€ 열리면 socket ioκ°€ νŒŒμΌμ„ μ„ νƒν•˜λŠ” 데 15 초 이상 걸리면 연결을 λŠμŠ΅λ‹ˆλ‹€.

그듀이 λ‹€λ₯Έ νŽ˜μ΄μ§€ λ˜λŠ” νƒ­μœΌλ‘œ μ „ν™˜ν•˜λ©΄ 15 초 후에 μ†ŒμΌ“ ioκ°€ λ‹€μ‹œ 연결을 λŠμŠ΅λ‹ˆλ‹€. μ–΄μ¨Œλ“ μ΄ 문제λ₯Ό ν•΄κ²°ν•˜κ³  μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€ / λ¬Έμ„œμ— μ΄ˆμ μ„ λ§žμΆ”μ§€ μ•Šλ”λΌλ„ μ†ŒμΌ“ ioλ₯Ό ν™œμ„± / μ—°κ²°λœ μƒνƒœλ‘œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš”.

Visibility API둜이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λ₯Ό μœ„ν•΄ Safari의 μ£Όμš” 문제-visible.hidden === trueμ—μ„œ μ†ŒμΌ“μ„ 닫을 μ‹œκ°„μ΄ μ—†μœΌλ―€λ‘œ μž₯μΉ˜κ°€ 잠금 ν•΄μ œ 된 ν›„ websocket을 λ‹«κ³  λ‹€μ‹œ μ‹œμž‘ν•΄μ•Όν•©λ‹ˆλ‹€.

@ JustFly1984 그것에 λŒ€ν•œ μƒ˜ν”Œ μ½”λ“œκ°€

이제 이것은 MacOS Safariμ—μ„œλ„ λ°œμƒν•©λ‹ˆλ‹€.

@calendee @anilanar μš°λ¦¬λŠ” sockets.ioλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  μˆœμˆ˜ν•œ μ›Ή μ†ŒμΌ“μ„ μ‚¬μš©ν•˜κ³  React.jsλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ μ½”λ“œκ°€ 맀우 λ³΅μž‘ν•©λ‹ˆλ‹€. 각 API에 λŒ€ν•΄ 두 개의 <ContextProvider /> κ°€ 있고, κ°€μ‹œμ„±μ€ 상단에, μ›Ή μ†ŒμΌ“μ€ ν•˜λ‹¨μ—, μ›Ή μ†ŒμΌ“μ€ κ°€μ‹œμ„±μ—μ„œ μ»¨ν…μŠ€νŠΈλ₯Ό μ‚¬μš©ν•œλ‹€λŠ” μ£Όμš” μ•„μ΄λ””μ–΄μž…λ‹ˆλ‹€.

μ €μ—κ²Œ 연락해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ JustFly1984. 사싀 κ²°κ΅­μ—λŠ” κ°€μ‹œμ„± APIκ°€ ν•„μš”ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. νƒ€μž„ 아웃을 μΆ”κ°€ν•˜κΈ° λ§Œν•˜λ©΄λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•œ ν›„μ—λŠ” 더 이상 iOS Safariμ—μ„œ μ—°κ²° λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

// Establish a Socket.io connection
// Initialize our Feathers client application through Socket.io
// with hooks and authentication.
client.configure(feathers.socketio(socket), {
  timeout: 2000,
});
// Use localStorage to store our login token
client.configure(feathers.authentication(), {
  timeout: 2000,
});
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰