Код: Выделить всё
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic", "/queue"); // Broker destinations
registry.setUserDestinationPrefix("/user"); // For user-specific messages
registry.setApplicationDestinationPrefixes("/app"); // Prefix for client messages to controllers
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
// Endpoint for clients to connect
registry.addEndpoint("/ws")
.setAllowedOrigins("*") // Adjust for production
.withSockJS(); // SockJS fallback enabled
}
}
Код: Выделить всё
@Controller
public class RestaurantStatusController {
// ... constructor injection for service ...
@MessageMapping("/initialStatus") // Handles SEND to /app/initialStatus
@SendToUser("/queue/initialStatus") // Sends response to /user/queue/initialStatus
public List sendInitialStatus() {
// ... service call ...
}
@MessageMapping("/updateTableStatus") // Handles SEND to /app/updateTableStatus
@SendToUser("/queue/updateTableStatus") // Sends response to /user/queue/updateTableStatus
public UpdateTableStatusResponse handleUpdate(UpdateTableStatusRequest req, Principal user) {
// ... service call using authenticated user ...
}
}
Цель клиента Android:
Мне нужно реализовать клиент Android, который может:
[*] soverse к концу. токен JWT, полученный с помощью предварительного входа в систему).
[*] подписаться [/b] на конкретные назначения (например,/toper/queue/initystatus ) и общие темпы (если есть, например, codecaScasts>. /> Отправить Сообщения в пункты назначения приложений (например/app/initialStatus или/apps/updateTatableStatus).>
сообщества эффективно отмены. /> Обработка подключения жизненный цикл (подключение/отключение), ошибки и потенциальные прерывания сети изящно. Подходы:
Использование выделенных библиотек Stomp: библиотеки, такие как (naiksoftware/forresthopkinsa) или Krossbow кажутся популярными.
Вопрос: . Какова. Какова. Какова. Как и в целях. Бэкэнд? Существуют ли конкретные детали конфигурации или потенциальные ловушки при их использовании с Spring's @sendtouser назначения и аутентификацию? Какова лучшая практика? Хотя он сложный, он предлагает полное управление.
Вопрос: При использовании этого подхода, каковы ключевые соображения для эффективности (например, модель потоков для анализа/обратных вызовов) и безопасности (обработка аутистики, обеспечение целостности кадра) на Android? Есть ли общие ошибки, которых следует избегать? Существуют ли лучшие практики для поглощения сердца с жизненным циклом Android? Соединение падает, ошибки сервера (ошибка stomp рамки) и тайм -ауты на Android? Должен ли я реализовать логику Automatic Reconnection? Примеры кода или указатели на лучшие практики будут высоко оценены.
Подробнее здесь: https://stackoverflow.com/questions/795 ... oid-app-ko