两个springboot+websocket之间的通信
2020回血第8天
链接: https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket.
![Alt](https://img-blog.csdnimg.cn/20200108190004844.png
什么原因要用这样的方式实现通讯?
说来话短,项目组中有人让用,那就自己摸索着走着瞧呗!
我的浅薄的印象中,正常点逻辑想,在自己的云端服务上做一个websocket的服务,如此就有求有应的代理了;再一个在本地搭一个websocket服务,作用就是哪个用哪个本地用我的本地websocket服务咯。
嗯,由于些许原因,项目的代码,就不做展示,就给成功的框架…
SHOW TIME
> 每个图片代表一个类,每个类的解释都在图片中,方便ctrl+c /ctrl+v ,这样提升效率你我他她
服务端
//新手要注意下,下面这个注解
@Component
//@ServerEndpoint(value="/ws/commodity/{fromUserId}/{toUserId}",configurator = SpringConfigurator.class)
@ServerEndpoint(value="/web/commodity/{fromUserId}/{toUserId}")//这个{}可有可无业务需求吧
public class WebSocketServer {
// 已经建立链接的对象缓存起来,也不一定非得用这个容器做容器-。-
private static ConcurrentMap<Integer, WebSocketServer> serverMap = new ConcurrentHashMap<Integer, WebSocketServer>();
// 当前session,嗯,做个样子,方便其他方法欣赏,借鉴
private Session currentSession;
@OnOpen
public void onOpen(Session session, @PathParam("fromUserId") int fromUserId, @PathParam("toUserId") int toUserId) throws IOException {
this.currentSession = session;
serverMap.put(fromUserId, this);
}
@OnClose
public void onClose(Session session, CloseReason reason) {
System.out.println(reason.toString());
//关闭链接时,删除缓存对象,要是做多个,就一个一个遍历吧,这个遍历容器删除嘛,-。-有小问题,
//自己注意吧。
serverMap