0

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 がデータを受け取ります。私がここで何か間違っているかどうか教えてもらえますか?

ありがとうございました。

4

1 に答える 1