【问题标题】:JAVA pusher string connectionsJAVA推送器字符串连接
【发布时间】:2016-10-10 08:23:11
【问题描述】:

所以我有以下情景:

我有一个浏览器作为我的推送服务器, 我的移动应用作为客户端。

现在我想将浏览器与手机配对,并让它们都连接到由浏览器动态组成的同一个频道,这将向我的设备发送一条消息并告诉它连接到 X 频道。现在我被困在应用程序部分,了解如何让设备连接到通过 Pusher 发送的通道。

我在 JAVA 中有以下代码:

 public void openPusherListener() {


    //default settings for pusher
    PusherOptions options = new PusherOptions().setCluster("eu");
    final Pusher pusher = new Pusher(API_KEY, options);


    pusher.connect(new ConnectionEventListener() {
        @Override
        public void onConnectionStateChange(ConnectionStateChange change) {
            String socketId = pusher.getConnection().getSocketId();
            Log.d("socketID", socketId);
        }

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




    Channel channel = pusher.subscribe("waitlist");//Default channel to join


    channel.bind("test", new SubscriptionEventListener() {
        @Override
        public void onEvent(String channelName, String eventName, final String data) {
            Gson gson = new Gson();
            JsonObject mydata = gson.fromJson(data, JsonObject.class);

            Log.d("PUSHER - channel", String.valueOf(mydata.get("channel")));

            String myChannel = String.valueOf(mydata.get("channel")).replace('"', ' ');

            Log.d("TEST MYCHANNEL", String.valueOf(mydata.get("channel")));


            Channel channel = pusher.subscribe(myChannel);//This doesnt work.

            channel.bind("test2", new SubscriptionEventListener() {
                @Override
                public void onEvent(String channelName, String eventName, final String data) {
                    Gson gson = new Gson();
                    JsonObject mydata = gson.fromJson(data, JsonObject.class);

                    Log.d("TEST2 PUSHER", String.valueOf(mydata.get("joinChannel")));
                }
            });



        }
    });
    pusher.connect();
}

不幸的是,加入第二个频道不起作用,我收到以下错误:

I/System.out: There was a problem connecting!

在 Pusher 上我可以看到以下内容:

Invalid channel name ' test2 ' (bad chars)

现在我认为我必须找到一种方法来连接到频道而不向它发送报价,所以我想知道如何实现这一点?

【问题讨论】:

    标签: java android pusher


    【解决方案1】:

    我刚刚设法让它工作,因为我使用的是 Gson,它总是会在字符串周围设置双引号,以便更容易将它放回另一个 json 数组,你需要这样做:

    String myChannel = mydata.get("channel").getAsString();
    

    这将抓取不带双引号的字符串。

    Remove quote from the JSONArray output

    【讨论】:

      猜你喜欢
      • 2011-04-02
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2015-07-31
      • 2011-07-22
      相关资源
      最近更新 更多