如何在android应用程序中使用spring boot websocket stomp api

fnx2tebb  于 2021-07-15  发布在  Java
关注(0)|答案(0)|浏览(228)

我知道这个问题以前可能有人问过,但我已经创建了一个websocket api使用spring引导,并在javascript sockjs中运行良好,但我需要该api在android应用程序上工作,我找不到任何类似javascript js的javawebsocket客户端。这是我的javascript代码,在stompwebclientapi上运行良好。我需要在连接应用程序订阅如下javascript代码

<script type="text/javascript">
var stompClient = null;
 function myfunction()
 {

    stompClient = Stomp.client('ws://mydomain.com:8443/MyContex/ws');

   stompClient.connect({}, onConnected, onError);
  }

const onConnected = () => {
    console.log("connected");

    stompClient.subscribe(
      "/user/1/queue/messages",// I need java code to do this
      onMessageReceived
    );

  };
  const onError = (err) => {
    console.log(err);
  };
  </script>

我遵循了这一点,但从未找到在javascript中执行注解部分的代码。
这是我的SpringBootStompAPI。

public class ChatController
{
    @Autowired
    private SimpMessagingTemplate messagingTemplate;
    @Autowired
    private MessageModelService messageModelService;
    @Autowired
    private ChatRoomService chatRoomService;

    @MessageMapping("/chat")
    public void processMessage(@Payload MessageModel messageModel) {
     Optional<String> chatId = chatRoomService
                .getChatId(messageModel.getSenderId(), messageModel.getRecipientId(), true);
        messageModel.setChatId(chatId.get());
       MessageModel saved = messageModelService.save(messageModel);
        messagingTemplate.convertAndSendToUser(
                messageModel.getRecipientId(),"/queue/messages",
                new ChatNotification(
                        saved.getId().toString(),
                        saved.getSenderId(),
                        saved.getSenderName()));
    }
    }

    @Data
    private class MessageModel{
    private String recepientId;
    private String senderId;
    private String message;
    }

@Configuration
@EnableWebSocketMessageBroker
public class WebMessageConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker( "/user");
        config.setApplicationDestinationPrefixes("/app");
        config.setUserDestinationPrefix("/user");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {

        registry
                .addEndpoint("/ws")
                 .withSockJS()
                .setAllowedOrigins("*");

    }

    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题