哥们,你是不是也在做javaweb,但是javaweb我们平时大部分时间都是使用http协议,也就是浏览器实现请求,然后后台返回数据,但是这样不能满足你强大的野心啊,你想的时候后台可以向前台推送消息,你的野心大了,自然要学习,于是你看websocket,也许你并不是多了解这是怎样的一个东西,,那么我告诉你,你找对了,websocket确实是能够实现后台向前台web端推送消息

那么怎样推送,网上这样的例子也不少,我也是看了很久,大家都写的很好,但是你感觉SpringMVC是不是需要配置什么东西,我看人家都配置了,可能需要配置吧,但是也不确定,这个随你自己关键是前台和后台调通就行了呗,,哈哈,不说这些废话了,我直接上代码吧:

<!DOCTYPE html>
<html>
<head>
<title>websocket example</title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=8,9,10" />
<script type="text/javascript" src="../js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="../js/sockjs-0.3.min.js"></script>
</head>
<script type="text/javascript">$(function() {var websocket = null;var url = "ws://localhost:8080/Shopping/websocket";if ('WebSocket' in window) {websocket = new WebSocket("ws://localhost:8080/Shopping/websocket");} else if ('MozWebSocket' in window) {websocket = new MozWebSocket("ws://localhost:8080/Shopping/websocket");} else {websocket = new SockJS("http://localhost:8080/Shopping/sockjs/websocket");}//打开websocketwebsocket.onopen = function() {websocket.send("helloworld");console.log("websocket链接成功");}//接收到消息websocket.onmessage = function(event) {console.log('Received: ' + event.data);};//关闭的时候websocket.onclose = function(event) {console.log('Info: connection closed.');console.log(event);};//发生错误的时候websocket.onerror = function(evnt) {console.log("  websocket.onerror  ");};//发送消息});
</script>
<body>
</body>
</html>

上面是前台的html网页,有的在页面前面还加什么jsp之类的标签,告诉你,那样也是没有错误的,但是我也尝试了,至少对我而言帮助是不大的,

前台好了,那么后台改怎样来写:

package com.wdg.controller;import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;/*** @ServerEndpoint 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,*                 注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端*/
@ServerEndpoint("/websocket")
public class WebSocketServer {// 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。private static int onlineCount = 0;// concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();// 与某个客户端的连接会话,需要通过它来给客户端发送数据private Session session;/*** 连接建立成功调用的方法* * @param session*            可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据*/@OnOpenpublic void onOpen(Session session) {this.session = session;webSocketSet.add(this); // 加入set中addOnlineCount(); // 在线数加1System.out.println("有新连接加入!当前在线人数为" + getOnlineCount());}/*** 连接关闭调用的方法*/@OnClosepublic void onClose() {webSocketSet.remove(this); // 从set中删除subOnlineCount(); // 在线数减1System.out.println("有一连接关闭!当前在线人数为" + getOnlineCount());}/*** 收到客户端消息后调用的方法* @param message 客户端发送过来的消息* @param session 可选的参数*/@OnMessagepublic void onMessage(String message, Session session) {System.out.println("来自客户端的消息:" + message);//群发消息for(WebSocketServer item: webSocketSet){try {   item.sendMessage("折旧的心");} catch (IOException e) {e.printStackTrace();continue;}}}/*** 发生错误时调用* * @param session* @param error*/@OnErrorpublic void onError(Session session, Throwable error) {try{}catch(Exception e){System.out.println("发生错误:你的主机中的软件中止了一个已建立的连接");}}/*** 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。* * @param message* @throws IOException*/public void sendMessage(String message) throws IOException {this.session.getBasicRemote().sendText(message);// this.session.getAsyncRemote().sendText(message);}public static synchronized int getOnlineCount() {return onlineCount;}public static synchronized void addOnlineCount() {WebSocketServer.onlineCount++;}public static synchronized void subOnlineCount() {WebSocketServer.onlineCount--;}
}

这样大概也就是好了,其实我没有做任何的配置,获取也不需要做任何的配置,两个页面给大家了,一个是java的后台,一个是前台的HTML文件,大家直接拷过去,直接刷新网页然后后台控制台打印出来消息:

如果你看到这样的提示恭喜你success

希望对你有所帮助

SpringMVC 如何实现将消息的websocket相关推荐

  1. 在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码

    在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码 <mvc:annotation-driven><!-- 消息转换器 --><mv ...

  2. Spring消息之WebSocket

    一.WebSocket简介 WebSocket 的定义?WebSocket是HTML5下一种全双工通信协议.在建立连接后,WebSocket服务器端和客户端都能主动的向对方发送和接收数据,就像Sock ...

  3. netty服务器定时发送消息,netty+websocket+quartz实现消息定时推送

    netty+websocket+quartz实现消息定时推送&&IM聊天室 在讲功能实现之前,我们先来捋一下底层的原理,后面附上工程结构及代码 1.NIO NIO主要包含三大核心部分: ...

  4. ios个推透传消息json接收不到_消息通讯——Websocket

    说起即时通讯大家应该都听过,像各种聊天软件用到的即时通讯技术是最多的.另外开发过程中实现消息推送最传统的做法就是轮询,即按照特定时间间隔由浏览器对服务器发送请求,以获取最新消息,这种传统模式带来很明显 ...

  5. html站内消息列表,WebSocket实现站内消息实时推送

    关于WebSocket WebSocket是HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议.什么是全双工?就是在同一时间可以发送和接收消息,实现双向通信,比如打电话.WebSocke ...

  6. 服务器向客户端推送消息之——WebSocket详细使用

    文章目录 1. 引言 2. WebSocket使用步骤 2.1 引入依赖 2.2 创建WebSocket配置类 2.3 WebSocket服务类 2.4 前端页面 1. 引言 最近遇到一个生活场景,需 ...

  7. springboot定时发送短信_springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送)...

    websocket springboot 整合websocket实现消息推送(主动推送,具体用户推送,群发,定时推送) 使用WebSocket构建交互式Web应用程序 本指南将引导您完成创建" ...

  8. websocket心跳链接代码_Hyperf+RabbitMQ+WebSocket实现大屏幕消息推送

    作者:八重樱 来源:www.cnblogs.com/a609251438/p/12713467.html 介绍 基于 Hyperf+ WebSocket +RabbitMQ 实现的一个简单大屏幕的消息 ...

  9. SpringBoot+Vue整合WebSocket实现前后端消息推送

    场景 WebSocket HTTP 协议是一种无状态的.无连接的.单向的应用层协议.它采用了请求/响应模型.通信请求只能由客户端发起,服务端对请求做出应答处理. 这种通信模型有一个弊端:HTTP 协议 ...

最新文章

  1. 微软表示Edge的性能更优于Chrome和Firefox
  2. Spring(一)——用Spring IOC容器创建对象
  3. 【目标检测_CentripetalNet】CentripetalNet: Pursuing High-quality Keypoint Pairs for Object Detection_2020
  4. ES6-12 array/数值拓展、ArrayOf、ArrayFrom
  5. dotnet-httpie 0.2.0 Released
  6. 技能的切实掌握 必须动手
  7. php mysql查询例子_php mysqli多个查询的例子
  8. Tomcat的下载及环境变量配置
  9. sendevent/getevent模拟Power键
  10. 微信小程序开发-轮播图的实现
  11. 机器学习中的 Shapley 值怎么理解?
  12. 关于windows密码加密算法的说明
  13. 中文乱码问题—字符集utf8、uf8mb4与排序规则
  14. iOS m3u8本地缓存播放(控制下载并发、暂停恢复)
  15. rls lms 对比 matlab,自适应均衡器的LMS和RLS两种算法的特性与仿真分析
  16. 排球分组循环交叉编排_第九届“理工杯”学生排球比赛正式拉开帷幕
  17. SICP读书笔记 2.5
  18. VBA编程_Application
  19. 斐波那契数列求第n项的值
  20. 图形学笔记 For GAMES201

热门文章

  1. 论坛第20000名幸运儿是谁?
  2. Java8的集合:LinkedList的实现原理
  3. 手写Redis服务端,从设计者的角度聊一聊Redis本身
  4. 面对复杂业务架构,阿里架构师是如何做的?(第一期)
  5. 低代码、无代码?深度解读硅谷新趋势
  6. 一篇文章搞懂Filebeat
  7. 4.5万字手把手教你实现MySQL TB级数据存储!!
  8. 程序员学霸!top2大学毕业!不到30岁第一次升P9失败!挫折感极强,怀疑人生?网友:没升P7的我,不要面子的吗??...
  9. 5万字的《Java面试手册》V1.0版本,高清PDF免费获取
  10. 聊聊这道【快手】面试题