【问题标题】:pusher android onEvent not being calledpusher android onEvent没有被调用
【发布时间】:2016-01-03 14:09:11
【问题描述】:

我正在使用 pusher-java-client 1.0.2(与 1.0.0 相同)。 android 客户端订阅了一个频道,但没有触发事件(未调用 onEvent)。 而在我的 js 客户端事件中,确实会为相同的事件触发。

    // Create a new Pusher instance
    mPusher = new Pusher(Defines.PUSHER_APP_KEY);

    mPusher.connect(new ConnectionEventListener() {
        @Override
        public void onConnectionStateChange(ConnectionStateChange change) {
            Logger.i("pusher: State changed to " + change.getCurrentState() +
                    " from " + change.getPreviousState());
        }

        @Override
        public void onError(String message, String code, Exception e) {
            Logger.e("pusher: There was a problem connecting! msg:" + message);
        }
    }, ConnectionState.ALL);

    Channel channel = mPusher.subscribe("test_chan", new ChannelEventListener() {
        @Override
        public void onSubscriptionSucceeded(String channel) {
            Logger.i("pusher: subscribed");
        }

        @Override
        public void onEvent(String channel, String event, String data) {
            Logger.i("pusher: channel=" + channel + " event=" + " data=" + data);
        }
    }, "test_event");

发送一些事件后输出日志:

01-03 15:47:02.884 pusher:状态从 DISCONNECTED 更改为 CONNECTING

01-03 15:47:04.403 pusher:状态从 CONNECTING 更改为 CONNECTED

01-03 15:47:04.709 推送者:已订阅

在“test_chan”中发布“test_event”时未触发我的 onEvent 回调的原因可能是什么?

【问题讨论】:

    标签: android pusher


    【解决方案1】:

    您必须在 eventName 前添加“client”并使用-

    Channel channel = mPusher.subscribe("test-chan",this, "client-test-event");
    

    在您的 Activity 中使用 ChannelEventListener

    public class YourActivity extends AppCompatActivity implements ChannelEventListener{
    
    ...
    
    @Override
                public void onSubscriptionSucceeded(String channel) {
                    Logger.i("pusher: subscribed");
                }
    
                @Override
                public void onEvent(String channel, String event, String data) {
                    Logger.i("pusher: channel=" + channel + " event=" + " data=" + data);
                }
    
    }
    

    尝试像这样实现它会起作用;让我知道它是否对你有帮助:)

    【讨论】:

    • 谢谢,但不,不起作用。我已经联系了 pubnub 并与他们的一位工程师进行了交谈,不幸的是,问题还没有解决。可能在以后的版本中。无论如何,我现在停止尝试 pubnub。
    • 实际上我现在正在开发聊天应用程序,并且我已经实现了 pusher ;它对我有用,你能把代码发给我,然后我可以给出确切的解决方案;
    • 你用过触发器吗?例如:PusherConfig.channel.trigger("test_event", jsonMessage);
    • 嘿,我发现了你的问题;我已经更新了上面的代码;实际上你必须在事件中使用'client'键:client-test-event
    • 现在可以使用了;请让我知道目前的状态; :)
    【解决方案2】:
     // Create a new Pusher instance
    
        HttpAuthorizer authorizer = new HttpAuthorizer("https://example.com");
    
        PusherOptions options = new PusherOptions().setCluster("mt1")
                .setEncrypted(true)
                .setWsPort(6001)
                .setWssPort(6001)
                .setAuthorizer(authorizer)
                .setHost("example.com");
        pusher = new Pusher("your-key", options);
    
        //connect
        pusher.connect(new ConnectionEventListener() {
            @Override
            public void onConnectionStateChange(ConnectionStateChange change) {
                Log.i(TAG, "State changed from " + change.getPreviousState() +
                        " to " + change.getCurrentState());
            }
    
            @Override
            public void onError(String message, String code, Exception e) {
                Log.i(TAG, "There was a problem connecting! " +
                        "\ncode: " + code +
                        "\nmessage: " + message +
                        "\nException: " + e
                );
            }
        }, ConnectionState.ALL);
    
        // Subscribe to a channel
        // Bind to listen for events
        pusher.subscribe("channel-name").bind("event-name", new ChannelEventListener() {
            @Override
            public void onSubscriptionSucceeded(String channelName) {
    
                Log.d(TAG, "onSubscriptionSucceeded: ");
            }
    
            @Override
            public void onEvent(PusherEvent event) {
                Log.d(TAG, "onEvent: data " + event.getData() + " user id " + event.getUserId());
    
    
            }
        });
    
        // Reconnect, with all channel subscriptions and event bindings automatically recreated
        pusher.connect();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 2012-07-14
      • 2017-01-24
      • 1970-01-01
      • 2017-10-28
      • 2016-08-18
      相关资源
      最近更新 更多