gpt4 book ai didi

spring - 订阅不工作 Spring SockJs Stomp

转载 作者:行者123 更新时间:2023-12-04 02:07:56 24 4
gpt4 key购买 nike

我想使用 websocket 从服务器向客户端发送一些东西..这是我的代码:

----服务器上的Websocket配置----

@Configuration
@EnableWebSocketMessageBroker
@Slf4j
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer{

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/myWebSocketEndPoint")
.withSockJS();
}
}

---- Controller ---

@Controller
@Component
@Slf4j
public class MenuItemController{
@SendTo("/topic/notification")
public String sendToMenuItems(MenuItemDto menuItem) {
return menuItem.getMenuItemName();
}
}

----- 客户 ----

var SockJS = require('sockjs-client');
var Stomp = require('stompjs');

let connectWebSocket = () => {
socket = new SockJS(context.backend + '/myWebSocketEndPoint');
stompClient = Stomp.over(socket);
stompClient.connect({},function (frame) {
console.log(frame);
stompClient.subscribe('/topic/notification', function(menuItem){
alert(menuItem);
});
});
}
connectWebSocket();

我使用 context.backend 因为我使用 webpack,所以 websocket 连接到后端服务器。它适用于连接并且订阅似乎也有效,但是当我从服务器向客户端发送内容时,警报不会出现并且在控制台中没有来自 websocket 的消息传入。我的问题是什么?我希望有人能帮助我.. =D

最佳答案

存在相关问题:https://github.com/spring-guides/gs-messaging-stomp-websocket/issues/10

使用

stompClient.connect({}, function(frame) {

代替

stompClient.connect("","",function (frame) {

编辑:如果您想使用 Rest Controller,请使用 SimpMessagingTemplate 发送消息。

@Autowired
private SimpMessagingTemplate messagingTemplate;

你的方法会调用

messagingTemplate.convertAndSend("/topic/notification", "test");

如果没有,请务必使用 @MessageMapping(value = "/sentToMenu") 注释您的 sendToMenuItems 并且您有一个适当的 stomp 客户端发送消息:stompClient.send("/sentToMenu", {}, 'teste');

关于spring - 订阅不工作 Spring SockJs Stomp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41696541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com