Я поддерживал образец проекта Spring / RSocket с 4 основными режимами взаимодействия RSocket.
Если вам нужен только регистр запроса / ответа для простых операций CRUD, проверьте режим запрос и ответ и выберите транспортный протокол, TCP или WebSocket.
Чтобы реализовать операции CRUD, просто определите для них 4 разных маршрута, например, определите RESTful API с помощью 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 или Android и т. Д.
Обновление: я добавил образец сырости в свой Примеры кодов rsocket, и я опубликовал сообщение на Medium.
person
Hantsy
schedule
01.03.2020