This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Передача ивентов с клиента на CEF.

askjbdaksd

Новый участник
10 Май 2022
8
1
22
Всем привет. Недавно начал увлекаться разработкой на платформе RAGE:MP, и уже столкнулся с некоторыми трудностями.
Создал ивент на клиентской стороне, вот код:
JavaScript:
mp.events.add('showTestPage', () => {
    if (!testBrowser) {
        testBrowser = mp.browsers.new('http://localhost:3000/test');
        testBrowser.call('testEvent', [mp.players.length]);
    } else {
        testBrowser.destroy();
        testBrowser = null;
    }
});

А на CEF пробую сделать след. образом (в обычной html + js работало всё замечательно, а c реактом не хочет):
JSX:
import React from "react";
const Test = () => {
    const [test, setTest] = React.useState('');
    // @ts-ignore
    if (window.mp) {
        // @ts-ignore
        window.mp.events.add('testEvent', (inputValue: any) => {
            setTest(inputValue);
        });
    }
    return (
        <h1 style={{ "color": "red", "fontSize": "54px" }}>{test}</h1>
    )
}
export default Test;

Вызываю клиентский ивент через команду (на сервере, обычный player.call())
При вызове крашит клиент без ошибок, и записей в логи (логи-рейджа)
Может кто-то знает в чем может быть проблема?
Заранее спасибо.
 

og sofly

Начинающий специалист
29 Янв 2022
149
60
106
JavaScript:
testBrowser = mp.browsers.new('http://localhost:3000/test'); //ссылка на веб. замени на packages://test/index.html т.е.
testBrowser = mp.browsers.new('packages://test/index.html');
 

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
Я делаю проверку на global.mp, вместо window.mp

Еще заметил что ты отправляешь массив, с клиентской стороны и на CEF выводишь его текстом. Предполагаю в этом и проблема.

P.S. обязательно отправлять массив нужно с серверной стороны, с клиентской стороны делать это не нужно
 

askjbdaksd

Новый участник
10 Май 2022
8
1
22
Вместо window.mp -> global.mp? Попробую.
А по поводу массива, я сюда закинул такой вариант, но пробовал и просто параметром передать (без массива) :|
p.s Вариант с изменой url браузера не помог.

upd: Не сработало
 

askjbdaksd

Новый участник
10 Май 2022
8
1
22
По итогу решил проблему использованием rpc. Всем спасибо.
 
Реакции: dooj