1.添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-websocket</artifactId>
  4. </dependency>

2.前端代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>webscoket</title>
  6. </head>
  7. <body>
  8. <script>
  9. var websocket = null;
  10.  
  11. if('WebSocket' in window){
  12. websocket = new WebSocket("ws://localhost:8080/webSocket")
  13. }else{
  14. alert("该浏览器不支持websocket")
  15. }
  16.  
  17. websocket.onopen = function(event){
  18. console.log('建立连接')
  19. }
  20.  
  21. websocket.onclose = function(event){
  22. console.log('连接关闭')
  23. }
  24.  
  25. websocket.onmessage = function(event){
  26. console.log('收到消息:'+event.data)
  27. document.body.innerHTML=event.data
  28. }
  29.  
  30. websocket.onerror = function(){
  31. alert("websocket发生通信错误")
  32. }
  33.  
  34. websocket.onbeforeunload = function(event){
  35. websocket.close()
  36. }
  37. </script>
  38. </body>
  39. </html>

3.后台代码

WebSocketConfig.java

  1. package com.example.demo;
  2.  
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.stereotype.Component;
  5. import org.springframework.web.socket.server.standard.ServerEndpointExporter;
  6.  
  7. @Component
  8. public class WebSocketConfig {
  9.  
  10. @Bean
  11. public ServerEndpointExporter serverEndpointExporter() {
  12. return new ServerEndpointExporter();
  13. }
  14. }

WebSocket.java

  1. package com.example.demo;
  2.  
  3. import java.util.concurrent.CopyOnWriteArraySet;
  4.  
  5. import javax.websocket.OnClose;
  6. import javax.websocket.OnMessage;
  7. import javax.websocket.OnOpen;
  8. import javax.websocket.Session;
  9. import javax.websocket.server.ServerEndpoint;
  10.  
  11. import org.springframework.stereotype.Component;
  12.  
  13. @Component
  14. @ServerEndpoint("/webSocket")
  15. public class WebSocket {
  16.  
  17. private Session session;
  18.  
  19. private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<>();
  20.  
  21. @OnOpen
  22. public void onOpen(Session session) {
  23. this.session = session;
  24. webSocketSet.add(this);
  25. System.err.println("【websocket消息】 有新的连接,总数:"+webSocketSet.size());
  26. }
  27.  
  28. @OnClose
  29. public void onClose() {
  30. webSocketSet.remove(this);
  31. System.err.println("【websocket消息】 连接断开,总数:"+webSocketSet.size());
  32. }
  33.  
  34. @OnMessage
  35. public void onMessage(String message) {
  36. System.err.println("【websocket消息】收到客户端发来的消息"+message);
  37. }
  38.  
  39. public void sendMessage(String message) {
  40. for(WebSocket webSocket:webSocketSet) {
  41. System.err.println("【websocket消息】广播消息,message="+message);
  42. try {
  43. webSocket.session.getBasicRemote().sendText(message);
  44. }catch(Exception e) {
  45. e.printStackTrace();
  46. }
  47.  
  48. }
  49. }
  50. }

Controller.java

  1. package com.example.demo;
  2.  
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6.  
  7. @RestController
  8. public class Controller {
  9.  
  10. @Autowired
  11. WebSocket websocket;
  12.  
  13. @RequestMapping("/send")
  14. public String send(String message) {
  15. websocket.sendMessage(message);
  16. return "测试成功";
  17. }
  18. }

SpringBoot WebSocket实现的更多相关文章

  1. SpringBoot+WebSocket

    SpringBoot+WebSocket 只需三个步骤 导入依赖 <dependency> <groupId>org.springframework.boot</grou ...

  2. springboot+websocket+sockjs进行消息推送【基于STOMP协议】

    springboot+websocket+sockjs进行消息推送[基于STOMP协议] WebSocket是在HTML5基础上单个TCP连接上进行全双工通讯的协议,只要浏览器和服务器进行一次握手,就 ...

  3. SpringBoot WebSocket STOMP 广播配置

    目录 1. 前言 2. STOMP协议 3. SpringBoot WebSocket集成 3.1 导入websocket包 3.2 配置WebSocket 3.3 对外暴露接口 4. 前端对接测试 ...

  4. Java Springboot webSocket简单实现,调接口推送消息到客户端socket

    Java Springboot webSocket简单实现,调接口推送消息到客户端socket 后台一般作为webSocket服务器,前台作为client.真实场景可能是后台程序在运行时(满足一定条件 ...

  5. Springboot+Websocket+JWT实现的即时通讯模块

    场景 目前做了一个接口:邀请用户成为某课程的管理员,于是我感觉有能在用户被邀请之后能有个立马通知他本人的机(类似微博.朋友圈被点赞后就有立马能收到通知一样),于是就闲来没事搞了一套. ​ 涉及技术栈 ...

  6. Springboot+websocket+定时器实现消息推送

    由于最近有个需求,产品即将到期(不同时间段到期)时给后台用户按角色推送,功能完成之后在此做个小结 1. 在启动类中添加注解@EnableScheduling package com.hsfw.back ...

  7. springboot+websocket 归纳收集

    websocket是h5后的技术,主要实现是一个长连接跟tomcat的comet技术差不多,但websocket是基于web协议的,有更广泛的支持.当然,在处理高并发的情况下,可以结合tomcat的a ...

  8. springboot websocket 一篇足够了

    什么是WebSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议 … 为什么要实现握手监控管理 如果说,连接随意创建,不管的话,会存在错误,broken pipe 表面看单纯报 ...

  9. SpringBoot + WebSocket 开发笔记

    1. 服务端的实现,我尝试了两种方式: 第一种是用“@ServerEndPoint”注解来实现,实现简单: 第二种稍显麻烦,但是可以添加拦截器在WebSocket连接建立和断开前进行一些额外操作. 不 ...

  10. springBoot -webSocket 基于STOMP协议交互

    浅谈WebSocket WebSocket是在HTML5基础上单个TCP连接上进行全双工通讯的协议,只要浏览器和服务器进行一次握手,就可以建立一条快速通道,两者就可以实现数据互传了.说白了,就是打破了 ...

随机推荐

  1. git原理:提交原理

    当运行git add  git commit的时候,git底层都做了什么? 这里涉及到的底层命令:git hash-object 讲对象写入到git object中git update-index   ...

  2. 李治军老师操作系统课程资源分享(视频+pdf)

    最近别人推荐,看看了哈工大的李治军老师主讲的操作系统,李治军老师通过linux0.11内核源码的讲解,学习了很多,更加形象了解了理论知识. 分享给大家,有pdf 链接:https://pan.baid ...

  3. python 使用pip install 手动安装本地包的方法

    Installing pystan manually fixed the issue (otherwise it would just hang forever). ~/GitHub $ git cl ...

  4. gradle build 找不到tools.jar 解决方法

    import javax.tools.ToolProvider compile(files(((URLClassLoader) ToolProvider.getSystemToolClassLoade ...

  5. Autonomous System

        自治系统(Autonomous System).在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协 议的小型单位.这个网络单位可以是一个简单的网络也可以是一个由一个 ...

  6. Ubuntu 下 java 版本的切换

    切换的方法很简单,使用下面的两个命令即可: update-alternatives --config java update-alternatives --config javac eg: root@ ...

  7. FarBox的使用经历

    新年伊始,一个崭新的开始,我的博客也有个新的起点.怎么会有这个想法呢?个人觉得这是程序员那颗不安分的心开始躁动了(其实就是开始作了~~哈哈,开个玩笑). 更佳界面.更流畅的操作.更方便的查看.更炫酷动 ...

  8. Service Fusing

    服务熔断也称服务隔离,来自于Michael Nygard 的<Release It>中的CircuitBreaker应用模式,Martin Fowler在博文CircuitBreaker中 ...

  9. Python学习进程(13)文件与IO

        本节介绍基本的IO函数和文件的读写操作.     (1)读取键盘输入: Python用于读取键盘输入的函数有两个:raw_input与input. 1)raw_input函数 从标准输入读取一 ...

  10. Python学习进程(1)Python简介

        Python是一种结合了"解释性"."编译性"."互动性"和"面向对象"的脚本语言. (1)官方介绍: Pyth ...