### ΠΡ Ρ ΠΎΡΠΈΡΠ΅:
### Π’Π΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Ρ io ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ, Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈΡΡΠ΅ΠΊΠ»ΠΎ.
### Π¨Π°Π³ΠΈ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ)
Π ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ:
```js
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ io ΠΈΠ· 'socket.io-client';
const BACKEND = 'URL-Π°Π΄ΡΠ΅Ρ ΠΌΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° socketio'
const sock = io(BACKEND, {ΡΡΠ°Π½ΡΠΏΠΎΡΡΡ: ['websocket'], forceNew: true });
sock.on('ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½', () = {
ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ;
})
```
ΠΡΡΠ½Π°Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠ°ΠΊ:
ΠΠ΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠΌ-Π°ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ
### ΠΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π― ΠΎΠΆΠΈΠ΄Π°Ρ, ΡΡΠΎ ΡΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΠΌΠΎΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ socketio ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
### ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ
ΡΠΏΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ https://github.com/socketio/socket.io-client/issues/1245
Π― ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΠ²Π°Ρ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ, ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ΅.
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ socket io Π½Π° Π½ΠΎΠ²ΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ 0.57.8, ΠΈ Ρ ΡΠ½ΠΎΠ²Π° ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ²ΡΠΈΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π Π Π²Π΅ΡΡΠΈΠΈ 0.57.3. Π Π°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ. ΠΠΎ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ.
Π Π΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠΉ: 0.57.8
Π Π΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.6.3
socket.io-ΠΊΠ»ΠΈΠ΅Π½Ρ: 2.0.4
ΠΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π΅ΡΡΠΈΡ socketio js Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π° 2.0.4.
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° @jr-k ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²Π·Π»ΠΎΠΌΠ° @anooj1483 ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ https://github.com/socketio/socket.io-client/issues/1245#issuecomment -451285245 Π² #1245.
ΠΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΌΠ΅Π½Ρ
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π₯ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½ ΠΈΠ»ΠΈ apk ΡΠΎΠ±ΡΠ°Π½ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΠΏΡΡΠΊΠ°.
Versions:
"react": "16.8.2",
"react-native": "0.58.4",
"socket.io-client": "^2.2.0"
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΡΠΎ ΠΈ Ρ Π²ΡΠ΅Ρ
. ΠΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅.
ΠΠ΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ React Native:
Β«ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡΒ»: Β«16.5.0Β»,
"ΡΠ΅Π°Π³ΠΈΡΡΡΡΠΈΠΉ-ΡΠΎΠ΄Π½ΠΎΠΉ": "^0.58.4",
"socket.io-ΠΊΠ»ΠΈΠ΅Π½Ρ": "^2.1.1"
ΠΠ΅ΡΡΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ°:
"ΡΠΎΠΊΠ΅Ρ.ΠΈΠΎ": "2.0.4"
socket.io-client: 2.0.4
ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ.
Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ 2.0.4 + ReactNative
TypeError: undefined Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ (ΠΎΡΠ΅Π½ΠΊΠ° 'n.protocol')
ΠΠ‘ΠΠ ΠΠΠΠΠΠ ΠΠ’Π Π΄Π»Ρ ΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ» host:port ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ:
const socket = io(" //domain.com:port ", opts); // ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ NO ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»:
const socket = io(" http://domain.com:port ", opts);
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
react-native : 0.57.8
,
socket-io-client : 2.2.0
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΊΠ΅
ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π°ΡΠ΅Π» ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΠ΅? Ρ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΏΠ°ΠΊΠ΅ΡΠ° Π±Π΅Π· Π²Π΅Π·Π΅Π½ΠΈΡ
Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΈΠ½ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ/ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΌΠΎΡ Π±ΡΠ»Π° Π»ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ .
ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Ρ github, Π²ΠΎΡ ΡΠ°ΠΊ, ΡΠ΅ΡΠΈΠ» ΠΌΠΎΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ RN android:
npm i socketio/engine.io-client#3.3.2 -S
ΠΠ°ΡΠ΅ Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅
ΠΠ‘ΠΠ ΠΠΠΠΠΠ ΠΠ’Π Π΄Π»Ρ ΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ» host:port ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ:
const socket = io(" //domain.com:port ", opts); // ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ
Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π» Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ NO ΠΎΡΠ»Π°Π΄ΠΊΠΈ, ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»:
const socket = io(" http://domain.com:port ", opts);
ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° socket.io 2.1.1 ΠΈ react-native 0.59.8. Π»ΡΠ±Π»Ρ ΡΠ΅Π±Ρ @ningacoding π π
ΠΡΠΈΠ²Π΅Ρ @autotrof ,
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ Π²Π΅ΡΡΠΈΡ 0.59.8 ΠΈ socket.io, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ Π² ΡΠ±ΠΎΡΠΊΠ΅ ΡΠ΅Π»ΠΈΠ·Π°.
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ip ΠΈ ΠΏΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ,
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡΡ?
ΠΠΈΠΊΡΠΎ Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ?
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅
react-native : 0.61.5
socket.io-client: 2.3.0 (I tried another version, 2.1.1, 2.0.1, 2.1.0)
Π£ ΠΌΠ΅Π½Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ :(
Π― ΡΠ΅ΡΠΈΠ» ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² console.dir()
Π½Π° console.log()
Π€ΡΠ½ΠΊΡΠΈΡ console.dir()
Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ Π²ΡΠΏΡΡΠΊΠ° ππ
ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉ Π½Π° Π°Π½Π΄ΡΠΎΠΉΠ΄Π΅ Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ
android:label= "@string/ΠΈΠΌΡ_ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ"
android:icon= "@mipmap/ic_launcher"
android:roundIcon= "@mipmap/ic_launcher_round"
android:allowBackup= "Π»ΠΎΠΆΡ"
android:usesCleartextTraffic= "true" <-- Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎ
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π₯ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½ ΠΈΠ»ΠΈ apk ΡΠΎΠ±ΡΠ°Π½ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΠΏΡΡΠΊΠ°.