1.依赖

     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>

2.配置文件

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {/**** 注册 Stomp的端点 addEndpoint:添加STOMP协议的端点。提供WebSocket或SockJS客户端访问的地址* 这里没有使用SockJS协议,因为该协议只支持文本消息,启用了WebSocket的访问地址* * @param registry*/
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint("/message").setAllowedOrigins("*");
}@Override
public void configureWebSocketTransport(WebSocketTransportRegistration registry) {// 设置最大消息发送长度为5mregistry.setMessageSizeLimit(1024 * 1024 * 5);registry.setSendBufferSizeLimit(1024 * 1024 * 5);registry.setSendTimeLimit(2000);
}/*** 配置消息代理 启动Broker,消息的发送的地址符合配置的前缀来的消息才发送到这个broker*/
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {registry.enableSimpleBroker("/topic");// 推送消息前缀registry.setApplicationDestinationPrefixes("/topic");// 应用请求前缀registry.setUserDestinationPrefix("/user");// 推送用户前缀
}
}

3.Controller 消息控制器

 @Api(tags = "消息控制器")@RestControllerpublic class MessageController {@Autowiredprivate IMessageService service;/*** 字节传输  接受前端传输过来的数据* 有效载荷* 前端   传输路径topic/server/byte* @throws Exception*/@MessageMapping("/server/byte")public JsonResult subscribeByte(@Headers Map<String, Object> headers, String payload) {System.out.println(payload);Map<String,String> nativeHeaders = JSONObject.parseObject(JSON.toJSONString(headers.get("nativeHeaders")), Map.class);service.subscribeByte(nativeHeaders, payload);return JsonResult.ok();}@Autowiredprivate SimpMessagingTemplate messagingTemplate;/*** 主动通过socket发数据给前端,模拟由硬件或算法调用该接口** @param headers* @param s*/@PostMapping("/server/aa")public void subscribeByte1(@Headers Map<String, Object> headers, String s) {//new Thread(new Msg(s, messagingTemplate)).start();//       service.subscribeByte(headers, s);}/*** 定义传输类*/public class Msg implements Runnable {private String msg;private SimpMessagingTemplate messagingTemplate;public Msg(String msg, SimpMessagingTemplate messagingTemplate) {this.msg = msg;this.messagingTemplate = messagingTemplate;}@Overridepublic void run() {this.messagingTemplate.convertAndSend("/topic/anquanmao", msg);}}}

4.html 连接socket

             <!DOCTYPE html><html><head><meta charset="UTF-8"><title>demo</title></head><body><h3>选择一张图片并通过websocket发送到后台</h3><input accept="image/*" type="text" id="file"><br/><h3>后台会实时通过websocket把图片回传(可以把本页面打开两个以测试效果)</h3><div style="width: 800px; height: 600px;"><img alt="" id="img" width="800" height="600" src=""/></div></body><script type="text/javascript" src="js/jquery-2.1.4.min.js"></script><script type="text/javascript" src="js/stomp.js"></script><script type="text/javascript" src="js/websocket.js"></script><script type="text/javascript">// !!!!不是原生的WebSoceket,使用的spring-boot-starter-websocket包,基于STOMP协议的WebSocket//websocket链接成功后回调function init(websocket){$("#file").change(function(){console.log($(this)[0].innerHtml)// var objectURL=URL.createObjectURL($(this)[0].files[0]);// console.log(objectURL);// var reader = new FileReader();// reader.onloadend=function() {//  if(reader.result.byteLength>0){//         //reader.result是一个含有视频数据流的Blob对象//         var buf = new Uint8Array(reader.result);////         //如果发送字节消息,第三个参数设置true//         websocket.send("/topic/server/byte",buf,true);//         console.log(">>> 已发送");//   }// };// reader.readAsArrayBuffer($(this)[0].files[0]);var value = $("#file").val()websocket.send("/topic/server/byte",value); //controller ->@MessageMapping("/server/byte")地址console.log(">>> 已发送");});//订阅一个topicwebsocket.subscribe("/topic/node",function(msg){console.log(msg);//字节消息if(msg.isByte){// var blob = new Blob([msg.body], { type: "image/jpg" });// var objectURL = URL.createObjectURL(blob);// $("#img").prop("src",objectURL);// setTimeout(function(){//     URL.revokeObjectURL(objectURL);//       msg.body=null;// },1000);}});}</script></html>

基于stomp协议的websocket相关推荐

  1. netty 基于 protobuf 协议 实现 websocket 版本的简易客服系统

    https://segmentfault.com/a/1190000017464313 netty 基于 protobuf 协议 实现 websocket 版本的简易客服系统 结构 netty 作为服 ...

  2. js 链接websocket马上断开_WebSocket之基于STOMP协议的广播模式实现群聊功能

    又是一个老套的古诗词赏析 不恨此花飞尽,恨西园.落红难缀.--苏轼<水龙吟·次韵章质夫杨花词> WebSocket与STOMP协议 相关简介 WebSocket WebSocket 是一种 ...

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

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

  4. spring websocket基于STOMP协议实现,apache httpd反向代理配置

    2019独角兽企业重金招聘Python工程师标准>>> 最近打算正式使用websocket,需要做负载,而使用的是apache http server,捣腾了一天找到了一种比较靠谱的 ...

  5. 基于WS协议的webSocket通信

    使用的是java-webSocket github地址:https://github.com/TooTallNate/Java-WebSocket 客户端 private final Executor ...

  6. java stomp_Spring Boot实现STOMP协议的WebSocket的方法步骤

    1.概述 我们之前讨论过Java Generics的基础知识.在本文中,我们将了解Java中的通用构造函数. 泛型构造函数是至少需要有一个泛型类型参数的构造函数.我们将看到泛型构造函数并不都是在泛型类 ...

  7. 微信小程序的websocket使用stomp协议--简单实用的npm包

    需求背景 在公司实习期间,要求做一个小程序的websocket连接,用于设备的实时控制和状态查询. 其中后端使用的是stomp协议,而微信小程序是不支持stomp协议的.但是当我知道的时候,后端已经全 ...

  8. STOMP协议——基于Websocket实现

    STOMP协议--基于Websocket实现 一.定义 二.作用 三.角色介绍 四.处理流程 五.代码实现 今天继续Websocket之STOMP协议,由于其设计简单,在开发客户端方面使用简便,在很多 ...

  9. c语言实现stomp协议客户端,在vue中使用SockJS实现webSocket通信

    最近接到一个业务需求,需要做一个聊天信息的实时展示的界面,这就需要和 服务器 端建立webSocket连接,从而实现数据的实时获取和视图的实时刷新.在此将我的实现记录下来,希望可以给有同样需求的人一些 ...

最新文章

  1. 蘋果全新MacBook價高質更精
  2. python实现简单的api接口-python中接口的实现实例
  3. AI:2020年6月22日北京智源大会演讲分享之09:00-09:50 全体大会《AI精度与隐私的博弈》
  4. 【Python】【应用 01】使用python初步处理文件数据就那么简单!(本文以处理excel和目录为例)
  5. hdu5438(2015长春网络赛B题)
  6. 中国商用密码SMS4
  7. VB.NET版机房收费系统—DataGridView应用
  8. slf4j在linux位置,SLF4J环境设置
  9. 设置开机不自动进入锁屏状态
  10. 用户收货地址h5页面_如何实现H5可视化编辑器的实时预览和真机扫码预览功能?...
  11. 【UVA202】Repeating Decimals(模拟除法)
  12. 文献翻译__基于自适应全变差L1正则化的椒盐图像去噪
  13. 服务器与操作系统的区别是什么,服务器系统和普通用户操作系统有何区别
  14. 苹果MacBookPro六核i9芯32G存4TB硬SSD560X显15寸顶配51352元(公号回复“苹果AI”下载PDF资料)
  15. vegan稀释曲线 基因丰度_基于OTU的稀释曲线(Rarefaction curves) + ggplot2
  16. pymol作图-设置label的字体
  17. 【office】Visio 2016 画大括号(花括号) + 调整花括号尖角居中
  18. 字符串的输入输出处理
  19. MySQL--自然连接的用法
  20. Docker - 搭建LNMP环境 - 学习/实践

热门文章

  1. [转]基于mysql数据库binlog的增量订阅消费中间件:Canal
  2. 网络革命:软件定义网络与网络虚拟化
  3. 服务器除了一个灯亮其余的都不亮,鼠标键盘没反应
  4. 多核计算机是指有多个cpu,多核和多个CPU有什么区别?
  5. Aizu - 2224 Save your cats 最大生成树
  6. 【C语言】三级指针烧脑题
  7. Centos7.9、Ubuntu操作系统图文安装
  8. 用Java计算二月份有多少天
  9. 各大APP注册时发送短信验证码是怎么实现的?
  10. 诺奖终属黑洞理论-IT与物理的相互成就