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
{{message}} {{time}}
文章图片
.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%; }
文章图片
{{message}} {{time}}
后台代码
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()); } }}
注意:导入两个包
文章图片
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- android第三方框架(五)ButterKnife
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆