pusher android onEvent未被调用

时间:2016-01-03 14:09:11

标签: android pusher

我正在使用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推动者:状态变为从已断开连接

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

01-03 15:47:04.709 pusher:订阅

在发布" test_event"时,我的onEvent回调没有被触发的原因是什么?在" test_chan"?

2 个答案:

答案 0 :(得分:0)

您必须添加'客户端'在您的eventName之前使用' -'

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

将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);
            }

}

尝试这样实现它会起作用;并告诉我它是否会对你有所帮助:)

答案 1 :(得分:0)

 // 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();