Flask Socket.IO не отвечает на события, отправленные клиентом Android - PullRequest
0 голосов
/ 01 октября 2019

(1) Сторона Android

Для создания соединения с веб-сокетом я реализовал библиотеку socket.io следующим образом в файле build.gradle.

compile ('io.socket:socket.io-client:1.0.0') {
        exclude group: 'org.json', module: 'json'
    }

Вотфрагмент кода внутри Activity, который создает сокет и соединяется с базовым URL-адресом веб-сокета.

   try {
            socket = IO.socket(URLs.WEBSOCKET_BASE_URL);
            socket.on(Socket.EVENT_CONNECT, onConnect);
            socket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
            socket.on(Socket.EVENT_DISCONNECT, onDisconnect);
            socket.on(Consts.RESPONSE, onMessageReceived);
            socket.connect();
        } catch(URISyntaxException e) {
            Log.e(TAG, "URISyntaxException caught: " + e.getMessage());
        }

Когда соединение установлено, прослушиватель регистрирует, как определено в следующем фрагменте.

    private final Emitter.Listener onConnect = new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            Log.e(TAG, "Websocket is successfully connected.");
        }
    };

И, нажимая кнопку, я посылаю сообщение с событием test.

socket.emit("test");

(2) Backend (Flask)

Я написал часть, которая отвечает наtest событие.

...
from flask_socketio import SocketIO
...

app = Flask(__name__)
sio = SocketIO(app)

...

@sio.on('test')
def process_request(data):
    search_option = data[consts.SEARCH_OPTION]
    search_keyword = data[consts.SEARCH_KEYWORD]
    app.logger.info('search option: ' + search_option + ', search keyword: ' + search_keyword)

...

if __name__ == '__main__':
    ...
    sio.run(app, host='0.0.0.0', port=12378, debug=True)

Но когда я запускаю событие test из Android, серверная часть, похоже, не отвечает. Сама часть соединения вроде бы в порядке. Какую часть я должен исправить, чтобы она работала?

...