ΠΠ°ΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ?
Based on JavaScript.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ Π½Π°ΡΠ°Π»Π°, Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈ Ρ ΡΠ΅ΠΌ Π΅Π΄ΡΡ. Π― Π±ΡΠ΄Ρ ΠΎΠ±ΡΡΡΠ½ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΡΡΠΊΠΈ ΠΊΠΎΠ΄Π° Π΅ΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΠΉΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠΈ Π²Π΅Π·Π΄Π΅, ΠΌΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅ΡΡ, ΠΊΠΎΠΌΠΏ. ΠΈΠ³ΡΡ ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π³Π΄Π΅ ΡΠ·Π΅ΡΡ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ.
ΠΡΠ΅Π³ΠΎ Π΅ΡΡΡ ΡΡΠΈ Π²ΠΈΠ΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² real-time:
1) Long Polling
2) Event Sourcing
3) WebSocket
ΠΠΎΠΉΠ΄Π΅ΠΌ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ, ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΈΠΏΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π½Π°Π΄Π΅ΡΡΡ ΠΎΠ½ΠΈ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡΡ.
ΠΡΠΎ ΠΏΡΠ°Π²Π΄Π° ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ: ΠΠ»ΠΈΠ΅Π½Ρ Π΄Π΅Π»Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ => ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΆΠ΄Π΅Ρ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ° => ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ => Π½ΠΎΠ²ΡΠΉ Π·Π°ΠΏΡΠΎΡ
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠ²Π΅ΡΡ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅:ΠΠΎΠ΄ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Long Polling Π΅ΡΡΡ Π² ΡΠ΅ΠΏΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ
CΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ => ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
Π‘Π°ΠΌΡΠΉ useful Π²ΠΈΠ΄ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ» WebSocket ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΡΡ Π·Π°Π΄Π°Ρ ΠΈ ΡΠ½ΡΡΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½Π° Π»ΡΠ±ΠΎΠΉ Π΄ΠΎΠΌΠ΅Π½, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈ ΠΏΠΎΡΡΠΈ Π±Π΅Π· Π»ΠΈΡΠ½Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°.ΠΠΎΠ΄ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Event Sourcing Π΅ΡΡΡ Π² ΡΠ΅ΠΏΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ
ΠΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠ»ΠΈΠ΅Π½Ρ - ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ΅ΡΠ²Π΅Ρ-ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠΎΠ΄ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ WebSocket Π΅ΡΡΡ Π² ΡΠ΅ΠΏΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ
Π§Π΅ΡΠ΅Π· Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π²ΡΠΊΠ°ΡΠΈΡΡ +/- ΡΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π±ΡΠΎΠΊΠ΅ΡΠΎΠ², Π° ΡΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΡΡΠΎ ΡΠ°Π΄ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²ΡΠ°, ΡΡΠΎ Π½Π΅ Π³Π°ΠΉΠ΄, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π²ΠΎΠ΄Π½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠΊΠ°. Π‘ΠΎΠ²Π΅ΡΡΡ Π²Π°ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ ΡΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Ρ Π²ΡΡΡΠ΅ΡΠΈΠ»ΡΡ Ρ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΏΠΈΡΠ°Π» Π°Π½Π°Π»ΠΎΠ³ Π·ΡΠΌΠ° ΠΈ ΠΏΡΠΎΡΠ΅Π» Π½Π° ΡΡΠΎ. Π‘ΠΎΠΊΠ΅ΡΡ - ΠΊΡΡΡΠΎ, Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎ Π½ΠΈΡ