Как я могу получить определенный экземпляр / var из Java в NativeScript? - PullRequest
1 голос
/ 30 сентября 2019

Я создал плагин, который подключается и успешно подписывается на канал-пушер через NativeScript, используя этот плагин Java, сейчас я пытаюсь создать eventListener для получения событий в Nativescript,

это мой Плагин Java :

public class PusherAndroid {

    public void connectToPusher(String app_key, String channel_name, String event_name) {

        PusherOptions options = new PusherOptions().setCluster("eu");
        Pusher pusher = new Pusher(app_key, options);

        pusher.connect(new ConnectionEventListener() {
            @Override
            public void onConnectionStateChange(ConnectionStateChange change) {
                System.out.println("State changed to " + change.getCurrentState() +
                        " from " + change.getPreviousState());
            }

            @Override
            public void onError(String message, String code, Exception e) {
                System.out.println("There was a problem connecting!");
            }
        }, ConnectionState.ALL);

        Channel channel = pusher.subscribe(channel_name);

        channel.bind(event_name, new SubscriptionEventListener() {
            @Override
            public void onEvent(PusherEvent event) {
                System.out.println("Received event with data: " + event.toString());
            }
        });

    }
}

и это мой модуль :

module.exports = {
    connect:function(app_key, channel_name, event_name) {
        var psh = new com.pxb.pusherandroid.PusherAndroid();
        psh.connectToPusher(app_key, channel_name, event_name);

        var EventListener;
        function initializeEventListener() {
            if (EventListener) {
                return;
            }
            EventListener = com.pxb.pusherandroid.PusherAndroid.extend({
                interfaces: [com.pusher.client.channel.SubscriptionEventListener],
                onEvent: event => {
                    console.log(event);
                }
            });
        }

        initializeEventListener();
        <HERE I NEED MY CHANNEL>.bind(event_name, new EventListener());
    }
};

Теперь, как я могу получить этот канал в Javascript, чтобы использовать его как мой определенный подключенный канал и привязать к нему eventListener?

Channel channel = pusher.subscribe(channel_name);

спасибо

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

благодаря @ Manoj , нет необходимости кодировать на Java и пытаться использовать их в Javascript, мы можем напрямую использовать классы и методы Java с Javascript, для этого действительно недостаточно ссылок.

вот мой модуль после удаления всего java-кода и простого вызова классов и методов из pusher-java-library напрямую:

module.exports = {
    connect:function(app_key, channel_name, event_name) {

        PusherOptions = com.pusher.client.PusherOptions;
        Pusher = com.pusher.client.Pusher;
        Channel = com.pusher.client.channel.Channel;
        SubscriptionEventListener = com.pusher.client.channel.SubscriptionEventListener;
        PusherEvent = com.pusher.client.channel.PusherEvent;

        var options = new PusherOptions().setCluster("eu");
        var pusher = new Pusher(app_key, options);

        pusher.connect();

        var channel = new Channel(pusher.subscribe(channel_name));

    }
};

теперь собираюсь добавить свой обработчик событий с Javascript <3 </p>

0 голосов
/ 30 сентября 2019

Я на самом деле не знаю, как работает NativeScript, но не могли бы вы просто выполнить поиск по вашему Channel в строке json, сохранить его в глобальной переменной в вашем классе PusherAndroid, а затем получить к нему доступ и отменить его десериализацию в своем модуле?

...