JAVA 推杆串连接
JAVA pusher string connections
所以我有以下情况:
我有一个浏览器可以作为我的推送服务器,
我的移动应用程序作为客户端。
现在我想将浏览器与 phone 配对并让它们都连接到浏览器动态组成的同一频道,这将向我的设备发送一条消息并告诉它连接到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)
现在我认为我必须找到一种连接到频道而不向其发送报价的方法,所以我想知道如何实现这一点?
我刚刚设法让它工作,因为我使用的是 Gson,它总是会在字符串周围设置双引号,以便更容易将它放回另一个 json 数组,你需要做:
String myChannel = mydata.get("channel").getAsString();
这将获取不带双引号的字符串。
Remove quote from the JSONArray output
所以我有以下情况:
我有一个浏览器可以作为我的推送服务器, 我的移动应用程序作为客户端。
现在我想将浏览器与 phone 配对并让它们都连接到浏览器动态组成的同一频道,这将向我的设备发送一条消息并告诉它连接到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)
现在我认为我必须找到一种连接到频道而不向其发送报价的方法,所以我想知道如何实现这一点?
我刚刚设法让它工作,因为我使用的是 Gson,它总是会在字符串周围设置双引号,以便更容易将它放回另一个 json 数组,你需要做:
String myChannel = mydata.get("channel").getAsString();
这将获取不带双引号的字符串。
Remove quote from the JSONArray output