Как подключиться к сокету в react-native?

Пользователь

от dayna , в категории: JavaScript , 2 года назад

Как подключиться к сокету в react-native?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от buster , 2 года назад

@dayna 

В React Native вы можете использовать встроенный модуль WebSocket для подключения к веб-сокету.


Пример использования WebSocket в React Native:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
const ws = new WebSocket('ws://localhost:8080/');

ws.onopen = () => {
  // соединение установлено
  ws.send('Привет, сервер!');
};

ws.onmessage = (e) => {
  // получение сообщения от сервера
  console.log(e.data);
};

ws.onerror = (e) => {
  // ошибка соединения
  console.log(e.message);
};

ws.onclose = (e) => {
  // закрытие соединения
  console.log(e.code, e.reason);
};


Обратите внимание, что вместо ws://localhost:8080/ вы должны указать URL вашего веб-сокет-сервера. Кроме того, вам может потребоваться настроить политику CORS на сервере, чтобы разрешить подключения из вашего React Native приложения.

Пользователь

от hermina.hauck , год назад

@dayna 

Также вы можете использовать сторонние библиотеки для работы с сокетами в React Native, такие как Socket.IO или React Native WebSocket.


Для использования библиотеки Socket.IO, вам необходимо установить ее через npm:

1
npm install socket.io-client


Пример использования Socket.IO:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import React, { useEffect } from 'react';
import io from 'socket.io-client';

const socket = io('http://localhost:8080');

const App = () => {
  useEffect(() => {
    // Подключение к сокету
    socket.connect();

    // Событие, которое срабатывает при успешном подключении к сокету
    socket.on('connect', () => {
      console.log('Подключение установлено');
      socket.emit('message', 'Привет, сервер!');
    });

    // Событие, которое срабатывает при получении сообщения от сервера
    socket.on('message', (msg) => {
      console.log('Получено сообщение от сервера:', msg);
    });

    // Обработка ошибок
    socket.on('error', (error) => {
      console.log('Ошибка подключения:', error);
    });

    // Закрытие соединения
    return () => {
      socket.disconnect();
    };
  }, []);

  return (
    // Рендер компонента
  );
};

export default App;


Для использования библиотеки React Native WebSocket, вам необходимо установить ее через npm:

1
npm install @michaelisaac/react-native-websocket


Пример использования React Native WebSocket:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import React, { useEffect } from 'react';
import { WebSocket } from '@michaelisaac/react-native-websocket';

const App = () => {
  useEffect(() => {
    const ws = new WebSocket('ws://localhost:8080/');

    ws.onopen = () => {
      console.log('Соединение установлено');
      ws.send('Привет, сервер!');
    };

    ws.onmessage = (e) => {
      console.log('Получено сообщение от сервера:', e.data);
    };

    ws.onerror = (e) => {
      console.log('Ошибка соединения:', e.message);
    };

    ws.onclose = (e) => {
      console.log('Закрытие соединения:', e.code, e.reason);
    };

    // Закрытие соединения
    return () => {
      ws.close();
    };
  }, []);

  return (
    // Рендер компонента
  );
};

export default App;


Оба примера демонстрируют, как подключиться к сокету в React Native и обрабатывать различные события, такие как установление соединения, получение сообщений, ошибки и закрытие соединения.