pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.czh</groupId><artifactId>websocket</artifactId><version>0.0.1-SNAPSHOT</version><name>websocket</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency><groupId>org.webjars</groupId><artifactId>webjars-locator-core</artifactId></dependency><dependency><groupId>org.webjars</groupId><artifactId>sockjs-client</artifactId><version>1.1.2</version></dependency><dependency><groupId>org.webjars</groupId><artifactId>stomp-websocket</artifactId><version>2.3.3</version></dependency><dependency><groupId>org.webjars</groupId><artifactId>jquery</artifactId><version>3.3.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

配置websocket

package com.czh.websocket.config;import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;@Configuration
@EnableWebSocketMessageBroker//开启websocket消息代理
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {/* config.enableSimpleBroker("/topic")标识消息代理的前缀,即如果有消息的前缀是“topic”,就会给消息代理broker,再有消息代理将消息广播给当前连接的客户端*/config.enableSimpleBroker("/topic");/*config.setApplicationDestinationPrefixes("/app")表示配置一个或多个前缀,通过这些前缀过滤出需要被注解方法处理的消息* */config.setApplicationDestinationPrefixes("/app");}@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint("/chat").withSockJS();}
}

定义Controller

package com.czh.websocket.controller;import com.czh.websocket.model.Message;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;@Controller
public class GreetingController {@MessageMapping("hello")@SendTo("/topic/greetings")public Message greeting(Message message)throws Exception{return message;}
}

页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>群聊</title><script src="/webjars/jquery/jquery.min.js"></script><script src="/webjars/sockjs-client/sockjs.min.js"></script><script src="/webjars/stomp-websocket/stomp.min.js"></script></head>
<body>
<div><label for="name">请输入用户名:</label><input type="text" id="name" placeholder="用户名">
</div>
<div><button id="connect" type="button">连接</button><button id="disconnect" type="button" disabled="disabled">断开连接</button>
</div>
<div id="chat" style="display: none;"><div><label for="name">请输入聊天内容:</label><input type="text" id="content" placeholder="聊天内容"></div><button id="send" type="button">发送</button><div id="greetings"><div id="conversation" style="display: none">群聊进行中...</div></div>
</div>
<script>var stompClient = null;function setConnected(connected) {$("#connect").prop("disabled", connected);$("#disconnect").prop("disabled", !connected);if (connected) {$("#conversation").show();$("#chat").show();}else {$("#conversation").hide();$("#chat").hide();}$("#greetings").html("");}function connect() {if (!$("#name").val()) {return;}var socket = new SockJS('/chat');stompClient = Stomp.over(socket);stompClient.connect({}, function (frame) {setConnected(true);stompClient.subscribe('/topic/greetings', function (greeting) {showGreeting(JSON.parse(greeting.body));});});}function disconnect() {if (stompClient !== null) {stompClient.disconnect();}setConnected(false);}function sendName() {stompClient.send("/app/hello",{},JSON.stringify({'name': $("#name").val(),'content':$("#content").val()}));}function showGreeting(message) {$("#greetings").append("<div>" + message.name+":"+message.content + "</div>");}$(function () {$( "#connect" ).click(function() { connect(); });$( "#disconnect" ).click(function() { disconnect(); });$( "#send" ).click(function() { sendName(); });});
</script>
</body>
</html>

websocket实现消息群发相关推荐

  1. SpringBoot 集成 WebSocket 实现消息群发推送

    一. 什么是 WebSocket WebSocket 是一种全新的协议.它将 TCP 的 Socket(套接字)应用在了web page上,从而使通信双方建立起一个保持在活动状态的连接通道,并且属于全 ...

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

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

  3. socket接收的消息怎么更新到页面_spring boot 集成 websocket 实现消息主动

    前言 http协议是无状态协议,每次请求都不知道前面发生了什么,而且只可以由浏览器端请求服务器端,而不能由服务器去主动通知浏览器端,是单向的,在很多场景就不适合,比如实时的推送,消息通知或者股票等信息 ...

  4. spring boot 集成 websocket 实现消息主动推送

    前言 http协议是无状态协议,每次请求都不知道前面发生了什么,而且只可以由浏览器端请求服务器端,而不能由服务器去主动通知浏览器端,是单向的,在很多场景就不适合,比如实时的推送,消息通知或者股票等信息 ...

  5. python websocket实时消息推送

    python websocket实时消息推送 十分想念顺店杂可... 本人写的渣,大神勿喷. 转载请附带本文链接,谢谢. 服务端代码 # -*- coding: utf-8 -*- # @Time : ...

  6. java整合消息推送_SpringMVC整合websocket实现消息推送及触发功能

    本文为大家分享了SpringMVC整合websocket实现消息推送,供大家参考,具体内容如下 1.创建websocket握手协议的后台 (1)HandShake的实现类 /** *Project N ...

  7. java 微信群发多图文_[Java教程]httpClient实现微信公众号消息群发

    [Java教程]httpClient实现微信公众号消息群发 0 2016-09-21 20:00:10 1.实现功能 向关注了微信公众号的微信用户群发消息.(可以是所有的用户,也可以是提供了微信ope ...

  8. webscoket绑定php uid,Think-Swoole之WebSocket客户端消息解析与使用SocketIO处理用户UID与fd关联...

    WebSocket 客户端消息的解析 前面我们演示了当客户端连接服务端,会触发连接事件,事件中我们要求返回当前客户端的 fd.当客户端发送消息给服务端,服务端会根据我们的规则将消息发送给指定 fd 的 ...

  9. 微信公众号开发 [03] 结合UEditor实现图文消息群发功能

    0.写在前面的话 如何实现微信平台后台管理中的,图文消息发送功能? 大概的过程如下: 通过类似表单的形式,将文章各部分内容提交到后台,封装成一个实体类,并持久化到数据库中 需要推送的时候,将不同的文章 ...

最新文章

  1. Linux Kernel中local_irq_enable()和local_irq_disable()的实现
  2. php怎么输出倒三角_JS数组中,两两比较的算法,为了获取重复的值,并在php数组中,使用这种倒三角算法...
  3. Android新建项目选择SDK的区别
  4. springboot官网-application.properties文件
  5. (*长期更新)软考网络工程师学习笔记——Section 8 传输层
  6. [渝粤教育] 西南科技大学 英语语法1 在线考试复习资料
  7. 【Wax】使用Wax (framework方式,XCode 4.6)
  8. 前端学习(3112):react-hello-复习相关知识
  9. React 入门与实战-课时7 虚拟DOM的本质和目的
  10. Cassandra数据库模糊查询
  11. 【炫丽跑车win7主题】
  12. 玩家浅谈MID平板电脑主流中端方案
  13. mooc作业怎么上传附件_产创云操作指南(五):作业系统的使用(学生端)
  14. 《互联网周刊》发布2019快时尚品牌排行榜
  15. matlab adaptfilt.rls,基于RLS算法的多麦克风降噪
  16. 在HTML中插入SVG的几种方式
  17. 站斧浏览器——用实力,说实话
  18. 微机原理 || MOV 指令使用规则(详细+例题)
  19. Delphi 实现卸载Windows应用程序(类似360软件管家-卸载程序)
  20. BZOJ1143祭祀river

热门文章

  1. 《动手学深度学习》学习之路01-- Kaggle⽐赛:房价预测
  2. RT-Thread功耗调优项目实战 - 如何做好功耗
  3. 2022年的第一个夕阳
  4. android逆向开发工程师需要掌握的技能
  5. 关于游戏手柄按键的设计
  6. uni-app跨端开发H5、微信小程序、支付宝小程序遇到的坑
  7. 全平台系统提权辅助工具 PEASS-ng
  8. sentos chrony服务器安装配置与简易实验
  9. 如何确定试管婴儿胚胎质量
  10. msib450i gaming plus ac 开机vga长亮