WebSocket を介してサーバーに接続するために Autobahn を実装しています。接続を押すと、ソケットが正しく開き、ソケットが開いていることがログに記録されます。次に、サーバーにリクエストを送信しようとしますが、サーバーがこれを{"request":"getSoftwareVersion"}
受信すると、ソフトウェア バージョンを JSON オブジェクトで送り返す必要があります。問題は、onMessage がヒットしないことです。これが私のコードです:
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 クライアントで実装されています (autobahn ではありません)。
function getSoftwareVersion() {
socket_di.send('{"request":"getSoftwareVersion"}');
}
onMessage がデータを受け取ります。私がここで何か間違っているかどうか教えてもらえますか?
ありがとうございました。