Vue+ssh框架实现在线聊天

本文实例为大家分享了Vue+ssh框架实现在线聊天的具体代码,供大家参考,具体内容如下
效果图
Vue+ssh框架实现在线聊天
文章图片

Vue+ssh框架实现在线聊天
文章图片

核心部分
【Vue+ssh框架实现在线聊天】websocket编程
向后台发送消息

.smess{left: 20%; width:70%; position: absolute; top:70%}.text{border: 1px solid #409eff; }.cht{width: 55%; height: 30%; background-color: burlywood; margin-left: 18%; }

组件my.vue

.ms{text-align: right; margin-right: 0%; }.logo{width:60px; height: 60px; border-radius: 50%; }.time{font-size:14px; }.lborders{position: relative; margin-left:0%; }.rborders{position: relative; margin-right:0%; }

后台代码

package cn.com.socket; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import org.hibernate.SessionFactory; import net.sf.json.JSONObject; @ServerEndpoint("/javasocket/{uname}")public class SocketPart { //日期化 private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //存储会话的集合,value类型是java类class SocketPart private static Map map=new ConcurrentHashMap(); private String username; private Session session; private SessionFactory sf; public SessionFactory getSf() {return sf; } public void setSf(SessionFactory sf) {this.sf = sf; } @OnOpen public void open(@PathParam("uname")String username,Session session){this.username=username; this.session=session; map.put(username,this); } @OnClose public void close(){map.remove(this.username); try {this.session.close(); } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace(); }System.out.println("关闭"); } @OnError public void error(Throwable t) {// 添加处理错误的操作close(); System.out.println("发生错误"); t.printStackTrace(); } @OnMessage public void mess(String message,Session session){JSONObject jsonObject = JSONObject.fromObject(message); jsonObject.put("date", DATE_FORMAT.format(new Date())); //把当前集合的大小给前台,不然的话,就不知道怎么存储jsonObject.put("cusize",map.size()); //接收到信息for (String s : map.keySet()) {if(this.username.equals(map.get(s).username)){jsonObject.put("isSelf", true); }else{jsonObject.put("isSelf", false); }map.get(s).session.getAsyncRemote().sendText(jsonObject.toString()); } }}

注意:导入两个包

Vue+ssh框架实现在线聊天
文章图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    推荐阅读