Spring boot websocket, не получая данные - PullRequest
0 голосов
/ 22 января 2020

Пытаясь создать одностороннюю веб-розетку, клиент прослушивает только веб-сокет, но не видит никаких событий, заполняемых при попытке его отладки. Большинство примеров, которые я вижу, используют контроллер для отправки сообщения, мы используем POST API для создания сообщения, а затем транслируем его любым слушателям

WebSocketConfig

@Configuration
@EnableWebSocketMessageBroker
class WebSocketConfig : AbstractWebSocketMessageBrokerConfigurer() {

    override fun configureMessageBroker(config: MessageBrokerRegistry) {
        config.enableSimpleBroker("/topic", "/queue")
        config.setApplicationDestinationPrefixes("/app")
    }

    override fun registerStompEndpoints(registry: StompEndpointRegistry) {
        registry.addEndpoint("/messages").setAllowedOrigins("*")
        registry.addEndpoint("/messages").setAllowedOrigins("*").withSockJS()
    }
}

Сервис, который имеет дело с сообщения

@Component
class MessagesService {

    @Autowired
    private lateinit var eventsService: EventsService

    @Autowired
    private lateinit var messagesRepo: MessagesRepo

    @Autowired
    private lateinit var simpMessagingTemplate: SimpMessagingTemplate

    /**
     * Add a messsage to an event
     */
    fun addMessage(eventId: UUID, text: String): Message? {

        //TODO check if you were invited or public

        val event = eventsService.getEvent(eventId)
        val message = Message()
        message.messsage = text
        message.event = event
        message.user = UserUtil.currentUser

        messagesRepo.save(message)

        try {
            simpMessagingTemplate.convertAndSend("/messages", message)
        } catch (e: Exception) {
            e.printStackTrace()
        }

        return message
    }

    /**
     * Gets all messages for an event
     */
    fun getMessages(id: UUID): List<Message>? {
        return messagesRepo.getMessages(id)
    }

}

отправка сообщения не выдает никаких ошибок, и когда я устанавливаю sh соединение через что-то вроде https://www.websocket.org/echo.html, кажется, соединяется нормально, я не уверен, где смотреть, чтобы отладить это.

когда я подключаюсь, я вижу это в журналах, похоже, что соединение установлено

2020-01-21 15:26:28.562 DEBUG 22047 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet        : GET "/messages?encoding=text", parameters={masked}
2020-01-21 15:26:28.564 DEBUG 22047 --- [nio-8080-exec-9] pertySourcedRequestMappingHandlerMapping : looking up handler for path: /messages
2020-01-21 15:26:28.565 DEBUG 22047 --- [nio-8080-exec-9] o.s.w.s.s.s.WebSocketHandlerMapping      : Mapped to org.springframework.web.socket.server.support.WebSocketHttpRequestHandler@10acd880
2020-01-21 15:26:28.566 DEBUG 22047 --- [nio-8080-exec-9] o.s.w.s.s.s.WebSocketHttpRequestHandler  : GET /messages
2020-01-21 15:26:28.570 DEBUG 22047 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet        : Completed 101 SWITCHING_PROTOCOLS
2020-01-21 15:26:28.571 DEBUG 22047 --- [nio-8080-exec-9] o.apache.coyote.http11.Http11Processor   : Socket: [org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper@13faf299:org.apache.tomcat.util.net.NioChannel@28d71a47:java.nio.channels.SocketChannel[connected local=localhost/0:0:0:0:0:0:0:1:8080 remote=/0:0:0:0:0:0:0:1:59749]], Status in: [OPEN_READ], State out: [UPGRADING]
2020-01-21 15:26:28.573 DEBUG 22047 --- [nio-8080-exec-9] org.apache.tomcat.websocket.WsSession    : Created WebSocket session [2]
2020-01-21 15:26:28.574 DEBUG 22047 --- [nio-8080-exec-9] s.w.s.h.LoggingWebSocketHandlerDecorator : New StandardWebSocketSession[id=b99dfad2-5d4f-af38-db6e-af4bf14c6e3c, uri=ws://localhost:8080/messages?encoding=text]

это полезная нагрузка, которую я пытаюсь отправить, она слишком большая, может быть?

{
    "id": "2ce663d1-9e9a-42e0-bbad-211028e77332",
    "user": {
        "id": "bafcd9d6-451d-4f00-bedd-3f1a9baaa7b5",
        "username": null,
        "first": null,
        "last": null,
        "number": "555555555",
        "photo": null,
        "email": null,
        "birthday": null,
        "created_at": 1579639768481,
        "updated_at": 1579639768481
    },
    "messsage": "hello world again!",
    "created_at": 1579649686231,
    "updated_at": 1579649686231
}
...