Большинству игроков понадобится контроллер, поддерживающий частичные запросы контента (или байтовые диапазоны).
Это может быть немного сложно реализовать, поэтому я бы предложил использовать что-то вроде Spring Community Project Spring Content , тогда вам не нужно беспокоиться о том, как реализовать контроллер вообще.Концепции и модель программирования очень похожи на Spring Data, которые, по внешнему виду, вы уже используете.
Если вы используете Spring Boot (дайте мне знать, если это не так), то это будет выглядеть примерно так:
pom.xml
<!-- Java API -->
<dependency>
<groupId>com.github.paulcwarren</groupId>
<artifactId>content-fs-spring-boot-starter</artifactId>
<version>0.6.0</version>
</dependency>
<!-- REST API -->
<dependency>
<groupId>com.github.paulcwarren</groupId>
<artifactId>spring-content-rest-boot-starter</artifactId>
<version>0.6.0</version>
</dependency>
SpringBootApplication.java
@SpringBootApplication
public class YourSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(YourSpringBootApplication.class, args);
}
@Configuration
@EnableFilesystemStores
public static class StorageConfig {
File filesystemRoot() {
return new File("/path/to/your/sounds");
}
@Bean
public FileSystemResourceLoader fsResourceLoader() throws Exception {
return new FileSystemResourceLoader(filesystemRoot().getAbsolutePath());
}
}
@StoreRestResource(path="characterSounds")
public interface SoundsContentStore extends ContentStore<UUUID,String> {
//
}
}
Charater.java
public class Character {
@Id
@GeneratedValue
private Long id;
...other existing fields...
@ContentId
private UUID contentId;
@ContentLength
private Long contnetLength;
@MimeType
private String mimeType;
}
Это все, что вам нужно для создания на основе RESTаудио сервис на /characterSounds
с поддержкой потоковой передачи.Он на самом деле также поддерживает полную функциональность CRUD;Создайте == POST, прочитайте == GET (включите необходимую поддержку байтового диапазона), обновите == PUT, удалите == УДАЛИТЬ в случае, если это будет полезно для вас.Загруженные звуки будут сохранены в "/ path / to / your / sounds".
Итак ...
GET /characterSounds/{characterId}
вернет частичный ответ с контентом, и он должен воспроизводиться правильно для большинства, если не для всех игроков (включая поиск вперед и назад).
HTH