通过WebSocket同步客户端?

时间:2018-08-15 17:06:48

标签: spring websocket

为了减少服务器的HTTP开销,我想使用WebSockets,但我不确定如何满足我的要求。

简单地说:用户可以成组。如果他们在该组中,则可以查看民意调查的当前状态。这是我想保持最新状态的轮询,如果可能的话,也可以不进行轮询。

WebSockets上有tutorials,但它们只处理简单的用例。

就我而言,我想通知所有客户端服务器上发生了更改事件:特别是“ 某人投票”。

我不确定这是否可以轻松完成。我遇到的问题是,与客户端建立开放连接是不够的,我需要知道哪些连接可以“组合”在一起。一种方法是某种“事件总线”,它映射一个组ID,从而映射一个连接列表(在此示例中为this.groupToWebSocketSession):

@RequestMapping(value = "/groups/{groupId}", method = RequestMethod.POST)
public VoteDto vote(
        @PathVariable(name = "groupId") Long groupId, 
        @RequestParameter(name = "entityId") Long entityId) {

    VoteDto voteDto = this.voteService.vote(groupId, entityId);

    for(WebSocketSession session : this.groupToWebSocketSession.get(groupId)) {
        // Notify all active clients:
        session.sendMessage("VOTING_UPDATE");
    }

    return voteDto;
}

但是,我很确定这不是怎么做到的。但是如何做到这一点,WebSockets会成为未来的发展方向吗?

0 个答案:

没有答案