关于java:Spring boot websocket发送jsonstring

Spring boot websocket send jsonstring

我是 Spring Boot 新手,我正在尝试使用 websocket 发回 jsonstring,但我认为它返回的 jsonstring 格式不正确。

RMModel.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class RMModel {
    private Integer inQueue;
    private Integer suspended;

    public RMModel getMessage() {
        this.inQueue = new Random().nextInt(11);
        this.suspended = new Random().nextInt(11);
        return this;
    }

    @Override
    public String toString() {
        return"{" +""inqueue":" + this.inQueue +"," +""suspended":" + this.suspended + '}';
    }
}

WebSocketScheduler.java

1
2
3
4
5
6
7
8
9
10
11
12
@Component
public class WebSocketScheduler {

    @Autowired
    private SimpMessagingTemplate template;

    @Scheduled(fixedRate = 1000)
    public void publishData() {
        String data = RMModel.getData().toString();
        this.template.convertAndSend("/topic/recon", data);
    }
}

所以我想将 RMModel 的 jsonstring 返回给客户端。我有 angular2 客户端

1
this._stompService.subscribe('/topic/recon').subscribe(res => console.log(JSON.parse(res.body)));

它没有转换为 json 对象。
在spring boot中返回jsonstring的正确方法是什么?


问题解决了。
模型不应该有返回自身的方法,jackson 会抛出异常。

RMModel.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class RMModel {
    private Integer inQueue;
    private Integer suspended;

    public Integer getInQueue() {
        return inQueue;
    }

    public void setInQueue(Integer maximum) {
        this.inQueue = new Random().nextInt(maximum);
    }

    public Integer getSuspended() {
        return suspended;
    }

    public void setSuspended(Integer maximum) {
        this.suspended = new Random().nextInt(maximum);
    }

    @Override
    public String toString() {
        return"{" +""inqueue":" + this.inQueue +"," +""suspended":" + this.suspended + '}';
    }