通过 Websocket 控制器打印从 Stomp 传入的 json 数组

Posted

技术标签:

【中文标题】通过 Websocket 控制器打印从 Stomp 传入的 json 数组【英文标题】:Print json array incoming from Stomp over Websocket controller 【发布时间】:2017-08-05 21:12:40 【问题描述】:

我添加到我的类路径 jackson 数据绑定..

这是我的 java 代码(服务器端)

       @MessageMapping("/hello")
        @SendTo("/topic/whoIsOnline")
        public List<User> greeting(String name) throws Exception 
            List<User> list = new ArrayList<User>();
            User user = new User();
            user.setEmail("test@gmail.com");
            list.add(user);
            User user1 = new User();
            user1.setEmail("example@gmail.com");
            list.add(user1);
            System.out.println(list);
            return list;
        

这是JS代码..

var stompClient = null;
    $(document).ready(function() 

        var socket = new SockJS('onlineUsers');
        stompClient = Stomp.over(socket);
        stompClient.connect(, function(frame) 

            console.log('Connected: ' + frame);
            stompClient.subscribe('/topic/whoIsOnline', function(result) 
                var results = result.body;
                for(var i in results)
                      console.log(results[i].email);
                    

            );
        );
    );

    function sendName() 
        var txtUser = $('#txtUser').val();
        stompClient.send("/app/hello", , JSON.stringify(txtUser));
    

当我编写 document.writeln(results) 时,它会像这样打印...

["email":"test@gmail.com","email":"example@gmail.com"]

但是,我想这样打印..

test@gmail.com
example@gmail.com

for 循环不起作用..

for(var i in results)
   
      console.log(results[i].email);
   

【问题讨论】:

【参考方案1】:

试试下面的代码

var results = result.body;
var data = JSON.parse(results);
for(var i in data)
    console.log(data[i].email);

【讨论】:

以上是关于通过 Websocket 控制器打印从 Stomp 传入的 json 数组的主要内容,如果未能解决你的问题,请参考以下文章

通过 websocket 发送 STOMP 帧

如何使用 STOMP 从 Spring WebSocket 服务器向 WebSocket 客户端发送消息?

如何通过spring websocket STOMP向特定订阅发送消息?

使用 Rabbitmq STOMP websocket 获取队列大小

向非 Stomp/Websocket 消费者发送消息

引入sleuth依赖导致websocket 发送 STOMP 消息失败