为了减少服务器的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会成为未来的发展方向吗?