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?

Или может я вообще все не так делаю? Подскажите, как правильно сделать это


Ответы (0 шт):