Пытаюсь реализовать это в приложении. Slack RTM После вызова rtm.start я получаю JSON-ответ и извлекаю URL-адрес wss. После этого, следуя документации, мне нужно открыть websocket. Пробовал две библиотеки
compile 'com.koushikdutta.async:androidasync:2.+'
compile 'org.java-websocket:Java-WebSocket:1.3.0'
Первый выдает TimeoutException, второй — входит в метод onClose с i = -1, b = true (onError или onOpen не вызываются, см. код ниже).
connection = (HttpURLConnection) new URL(getQuery(URL + "rtm.start",
new Pair<>("token", TOKEN))).openConnection();
final String response = readIs(connection.getInputStream());
JSONObject jResponse = new JSONObject(response);
String uri = (String) jResponse.get("url");
С Java-WebSocket я пробовал этот код (стандартный из примера на github):
connectWebSocket(uri);
private void connectWebSocket(String uriStr) {
URI uri;
try {
uri = new URI(uriStr);
} catch (URISyntaxException e) {
e.printStackTrace();
return;
}
log(uri.toString());
log(uri.toASCIIString());
mWebSocketClient = new WebSocketClient(uri) {
@Override
public void onOpen(ServerHandshake serverHandshake) {
log("Opened");
mWebSocketClient.send("Hello from " + Build.MANUFACTURER + " " + Build.MODEL);
}
@Override
public void onMessage(String s) {
log(s);
}
@Override
public void onClose(int i, String s, boolean b) {
log("Closed " + s + " " + b + " number: " + i);
}
@Override
public void onError(Exception e) {
log("Error " + e.getMessage());
}
};
mWebSocketClient.connect();
}
Как я уже сказал выше - вызывается только onClose.
С AndroidAsync также пробовал стандартный код из примера:
AsyncHttpClient.getDefaultInstance().websocket(uri, "wss", (ex, webSocket) -> {
if (ex != null) {
log(ex.getMessage());
return;
}
webSocket.send("a string");
});
Я никогда раньше не работал с веб-сокетами на Android и не могу понять, что я делаю неправильно. Будем признательны за вашу помощь.
URL-адрес в JSON имеет тип
wss://ms156.slack-msgs.com/websocket/LYBUMUtG-bqj9HkKwEB5Yk_DCyPeRbnZ4viUJYHzrzJnLr-M74d46IQ9khTF8rik-v6ckJ4hqXPRi666hyPR6pismYBZBsggJUade3LOARc=