Я правда не вижу, что не так, На телефоне android подключаюсь к своему серверу node js socket.io, все события сработали. Но если я разорву соединение и снова активирую. Повторное подключение обнаружено сервером. Но события, отправленные с телефона на сервер, не принимаются сервером.
Я создал сокет с параметрами, позволяющими переподключение:
private Socket socket;
{
try {
IO.Options opts = new IO.Options();
opts.forceNew = false;
opts.reconnection = true;
opts.reconnectionAttempts = Integer.MAX_VALUE;
opts.reconnectionDelay = 1000;
opts.reconnectionDelayMax = 5000;
socket = IO.socket(Constant.URL_SOCKET, opts);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
Очевидно, я не забыл позвонить в onCreate:
socket.connect();
actionSocket();
Здесь мой слушатель также вызывает onCreate:
socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
actionSocket();
}
});
socket.on(Socket.EVENT_RECONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
actionSocket();
}
});
actionSocket соответствует этой функции:
socket.on("toast", new Emitter.Listener() {
@Override
public void call(Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Toast", Toast.LENGTH_SHORT).show();
}
});
}
});
Для тестового переподключения я получил это кнопка:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
socket.emit("toast", new JSONObject());
}
});
Сторона сервера:
io.on('connection', function(socket){
console.log("connection");
addSocketListeners(socket);
});
И addSocketListeners ()
function addSocketListeners(socket){
socket.on("toast", function(data){
socket.emit("toast", {});
});
}
Надеюсь, мой вопрос ясен. Спасибо всем, кто мне поможет.