深圳求做网站,服装设计专业比较好的学校,个人新闻类网站模板,松江新城投资建设集团有限公司网站首先websocket后台需要在web服务器运行#xff0c;所以先搭建一个web项目。websocket需要依赖其他的jar包#xff0c;引入依赖javaxjavaee-api7.0provided新建一个类#xff0c;该类建立一个服务端点 ServerEndpointimportjavax.websocket.*;importjavax.websocket.server.P…首先websocket后台需要在web服务器运行所以先搭建一个web项目。websocket需要依赖其他的jar包引入依赖javaxjavaee-api7.0provided新建一个类该类建立一个服务端点 ServerEndpointimportjavax.websocket.*;importjavax.websocket.server.PathParam;importjavax.websocket.server.ServerEndpoint;importjava.io.IOException;importjava.util.concurrent.ConcurrentHashMap;/***authorRice*create2020/06/24 15:56*/ServerEndpoint(/ws/{sid})public classWSServer {privateSession session;private staticConcurrentHashMap ss newConcurrentHashMap();private intoln;OnOpenpublic voidonOpen(Session session,PathParam(sid) String sid){oln;this.session session;ss.put(sid,session);}OnMessagepublic voidonMessage(String message ,Session session,PathParam(sid) String sid ) throwsIOException {Msg msg Msg.getInstance(message);msg.setUser(sid);if(msg.getTid()1){privateChat(msg);return ;}}OnClosepublic voidonClose(PathParam(sid) String sid){oln--;ss.remove(sid);}OnErrorpublic voidonError(Session session ,Throwable error){System.out.println(error);}private voidprivateChat(Msg msg) throwsIOException {if(ss.containsKey(msg.getTsid())){Session ts ss.get(msg.getTsid());ts.getBasicRemote().sendText(Msg.forwordMSg(msg));}else{this.session.getBasicRemote().sendText(对方不在线);}}}前端(客户端点)ws new WebSocket(ws://localhost:8080/wws/ws/_this.luser)ws.onmessagefunction(event){let rm JSON.parse(event.data);if(!_this.msgs[rm.user]){_this.$set(_this.msgs,rm.user,new Array());}_this.msgs[rm.user].push(rm.user: rm.msg);}当客户端点调用new Websocket时会发起和服务端的连接。当websocekt的readystate变为1时会触发后端onopen事件此时一般会将建立连接的session加入到管理的Map中记录session的名字和session.以此方便进行消息的转发。当客户端readystate1(连接成功),客户端可以进行发消息关闭连接。当客户端调用websocket.send(String msg)后台会触发onMessage方法并且把消息以及发消息的session传入到该方法中进行处理。通常客户端发送的消息需要自行规定数据报格式如JSON给后台进行解析。客户端点同样的需要进行onmessage方法的处理当服务端往客户端session发送消息同样会触发客户端的onmessage方法。以此达到即时沟通