Я написал программу, которая получает сообщения от сокета io, а затем воспроизводит медиа-файл.Поэтому, когда программа получает следующее сообщение, медиаплеер останавливается и воспроизводит другое.Я реализовал SocketIO
поток сообщений как Observable<String>
и MediaPlayer
как Complatable
.Таким образом, код содержит «подписаться в подписке»:
class Main {
Disposable d = null;
public void start() {
ScoketIO.connect("localhost:9000").subscribe(event -> {
if (d != null)
d.dispose();
d = MediaPlayer.play(event).subscribe();
}
}
}
Может быть, есть способ избежать «подписаться в подписке»?Также хорошо удалить все обнуляемые значения и сделать код более «функциональным»1017 * медиаплеер утилизируется (прекращается воспроизведение) при появлении нового события.Но в случае сбоя в медиаплеере произойдет сбой всей цепочки - сокетное соединение тоже, но это не так.Добавление retry
в медиаплеер также вызывает переподключение.Что означает «разные вычислительные контексты».