React Native: как правильно сделать компонент для сокетов?
Я делаю приложение для проекта, который уже работает. Сам проект написан на Yii2. Для обмена информацией (например чат), используются вебсокеты. В браузере они работают без проблем, а вот в RN столкнулся с проблемой.
Если я сделаю компонент, например Websocket, где будет подключение, прием сообщений и т.д., то как мне сделать отправку? Исходя из того, что я прочитал, нет возможности вызова функции дочернего компонента в родителе.
Думал сделать как просто функцию. Что то такого
import {makeid} from "./helper";
import {IP} from './env';
const ws = new WebSocket(`ws://${IP}:3002?user_id=131&uid=${makeid(10)}`);
// ws.onopen = () => {
// console.log('[Log]', 'Websocket open')
// };
// ws.onerror = (error) => {
// console.log('[Error ws]', error)
// }
// ws.onclose = function(event) {
// if (event.wasClean) {
// console.log('[Err]', 'Соединение закрыто чисто')
// } else {
// console.log('[Err]', 'Обрыв соединения')
// }
// console.log('[Socket error]', 'Код: ' + event.code + ' причина: ' + event.reason)
// };
ws.onopen = () => {
console.log('[Log]', 'Websocket open')
};
export default ws;
Дальше уже импортирую где надо и все. Этот вариант работает и есть возможность отправлять сообщения, так как я получаю по сути объект websocket-та.
Но тут тоже есть проблема. ID пользователя у меня хранится в AsyncStorage, и мне надо его получить с помощью
await AsyncStorage.getItem('user')
И вот тут проблема: как мне сделать код выше через async?
Или может я вообще все не так делаю? Подскажите, как правильно сделать это