Я реализую Autobahn для подключения к серверу через WebSockets. Когда я нахожу соединение, он правильно открывает сокет и регистрирует, что этот сокет открыт. Затем я пытаюсь отправить запрос на сервер, который просто {"request":"getSoftwareVersion"}
, когда сервер получает это, он должен отправить обратно версию программного обеспечения в объект JSON, проблема в том, что onMessage никогда не попадает. Вот мой код:Использование Autobahn для коммитов WebSocket, а не получение с сервера
public class AutoBahnConnectRequest extends Request{
private static WebSocketConnection mAutoBahnConnection;
private String mSocketHostAddress;
private final static String m_TAG = AutoBahnConnectRequest.class.getSimpleName();
public AutoBahnConnectRequest(String SocketHostAddress){
this.mAutoBahnConnection = new WebSocketConnection();
this.mSocketHostAddress = SocketHostAddress;
}
@Override
protected Void doInBackground(Void... params){
try {
mAutoBahnConnection.connect(mSocketHostAddress, new WebSocketHandler(){
@Override
public void onOpen() {
String requestSoftware = "{\"request\":\"getSoftwareVersion\"}";
Log.i(m_TAG, requestSoftware);
Log.i(m_TAG, "Status: Connected to " + mSocketHostAddress);
mAutoBahnConnection.sendTextMessage(requestSoftware);
}
@Override
public void onTextMessage(String payload) {
Log.i(m_TAG, "Got echo: " + payload);
}
@Override
public void onClose(int code, String reason) {
Log.i(m_TAG, "Connection lost."+ reason);
}
});
} catch (WebSocketException e) {
Log.d(m_TAG, e.toString());
}
return null;
}
}
Это было реализовано с помощью HTML клиента, как это (не с автобана):
function getSoftwareVersion() {
socket_di.send('{"request":"getSoftwareVersion"}');
}
и OnMessage принимает данные. Может кто-нибудь, пожалуйста, скажите мне, что я делаю что-то неправильно здесь?
спасибо.