当前位置: 首页 > 知识库问答 >
问题:

未调用spring Stomp Websockets回调

彭琛
2023-03-14

给定websocket配置:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.setApplicationDestinationPrefixes("/app");
        registry.enableSimpleBroker("/queue", "/topic");
    }

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

和客户端JavaScript:

<script type="text/javascript">
    console.log('begin javascript');

    var stompClient = null;

    function connect() {
        var socket = new SockJS('/myapp/add');
        stompClient = Stomp.over(socket);
        stompClient.connect({}, function(frame) {
            console.log('Connected to STOMP: ' + frame);
            stompClient.subscribe('/user/topic/abc', function(calResult) {
                console.log('*** Got it ***');
            });
        });
    }

    connect();

</script>

并从服务器发送此消息:

messagingTemplate.convertAndSendToUser(username, "/topic/abc", "hello");

回调不会被激发。

javascript控制台显示已建立连接:

已连接到STOMP:已连接用户名:jschmoe心跳:0,0版本:1.1订阅ID:sub-0目标:/user/topic/abc

并且tomcat控制台显示:

正在处理订阅目的地=/topic/abc-useryl3ovhr2订阅ID=sub-0会话=yl3ovhr2 user=jschmoe有效负载=byte[0]

然后在发送消息时:

正在处理消息destination=/topic/abc-useryl3ovhr2 session=null有效负载=hello

好像除了回调之外一切正常。

共有1个答案

卢权
2023-03-14

在我的例子中,问题是由XML配置引起的,当我切换到带有@EnableWebSocketMessageBroker注释的Java配置时,我在客户端收到了消息。

 类似资料:
  • 问题内容: 如果从调用, 则会 收到消息 “套接字已连接” ,但未调用。我在这里想念什么? 问题答案: 在AngularJS中,承诺结果在$ digest周期内异步传播。因此,仅在进入$ digest循环时才调用在then()中注册的回调函数。 因此,当您的套接字连接时,我们处于摘要周期。 创建一个新的Promise,但是直到下一个摘要周期(永远不会到来的摘要周期)之前,它的结果才会传播(因为没有

  • 当我尝试在回收器视图中选择一个元素时,不会调用OnBindViewWholder。我使用的是一个水平布局,所有元素最初都不显示(7个元素中有4个显示,当用户向右移动时,3个元素交替显示)。通常,当用户单击一个元素时,OnBindViewWholder应该被激发,但对我来说却没有发生。它只在初始化时触发。因为它没有激发,所以我不能单击回收器视图中的任何元素。也许和我的布局有关?我不确定 MyAdap

  • 我试图在我的数据库中保存一个json对象。未调用save()函数,但从未保存json对象。帮我解决这个问题。我想这是猫鼬的连接问题。这是我的密码。。 我的控制台日志:: 新增用户api命中!!json的内容是: 143没有userrs: 144 db中的用户计数已更新!!这个人生成的id是:ipkoID_C144调用保存函数obj::{"name":"Abhi","密码":"jio","usern

  • 我试图用Mocha、Chai和Sinon为我的代码添加更多的测试,但是我很难理解为什么第二个存根函数没有被识别为被调用。 我有一个向用户发送电子邮件的功能(稍后我将测试电子邮件功能-现在我只想处理我控制的存根依赖项) 和测试文件: 我可以用Sinon存根User.findOne()方法,但是当我尝试存根emailLogger.log()方法时,我遇到了麻烦。它似乎调用了存根,而不是真正的方法,而是

  • 现在我有:- 1) 1活动,它是从AppCompactActivity扩展而来的主要活动。 2) 1扩展自fragment的类,这是从主活动(1)-ProfileTeacherActivity调用的片段。java 3) 1个从DialogFragment扩展的fragment类,此对话框从fragment(2)-ModalBox调用。java 所以,基本上,这只是一个简单的执行流程。开始时,显示的

  • 问题内容: 我正在开发具有以下功能的条形码扫描应用程序: •访问设备相机,在SurfaceView上预览相机,并自动重新对焦 •Attemtps使用两种方法解码条形码 a)在使用 onTouchEvent(MotionEvent event)的 SurfaceView touch上,尝试拍摄条形码的图片,但获取 java.lang.RuntimeException:takePicture失败 b)