Я сохранил пример проекта Spring / RSocket с 4 основными c режимами взаимодействия RSocket .
Если вам требуется только запрос / ответ для простых операций CRUD, проверьте режим запрос и ответ и выберите транспортный протокол, TCP или WebSocket.
Для реализации Операции CRUD, просто определите для них 4 различных маршрута, например, определите API RESTful, используя URI, у вас должен быть хороший план для именования, но в RSocket нет методов HTTP, которые помогли бы вам дифференцировать одни и те же маршруты.
Например, на стороне сервера мы можем объявить @Controller
для обработки сообщений, подобных этой.
@Controller
class ProfileController {
@MessageMapping("fetch.profile.{name}")
public Mono<Profile> greet(@DestinationVariable String name) {
}
@MessageMapping("create.profile")
public Mono<Message> greet(@Payload CreateProfileRequest p) {
}
@MessageMapping("update.profile.{name}")
public Mono<Message> greet(@DestinationVariable String name, @Payload UpdateProfileRequest p) {
}
@MessageMapping("delete.profile.{name}")
public Mono<Message> greet(@DestinationVariable String name) {
}
}
На стороне клиента, если это приложение Spring Boot, вы можно использовать RSocket RSocketRequester
для взаимодействия со стороной сервера, как это.
//fetch a profile by name
requester.route("fetch.profile.hantsy").retrieveMono()
//create a new profile
requester.data(new CreateProfileRequest(...)).route("create.profile").retrieveMono()
//update the existing profile
requester.data(new UpdateProfileRequest(...)).route("update.profile.hantsy").retrieveMono()
//delete a profile
requester.route("delete.profile.hantsy").retrieveMono()
Конечно, если вы просто создаете сервис, предоставляемый протоколом rsocket, клиент может быть проектом rsocket- js или другими языками и средами, такими как Angular, React или * 1031. * et c.
Обновление: я добавил образец в мои примеры кодов rsocket и опубликовал пост на Medium .