Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >springboot+jsp WebSocketServer 消息提示音webSocketServer:WebSocketConfigjsp

springboot+jsp WebSocketServer 消息提示音webSocketServer:WebSocketConfigjsp

作者头像
用户5899361
发布于 2020-12-07 07:26:00
发布于 2020-12-07 07:26:00
1.2K00
代码可运行
举报
文章被收录于专栏:学习java的小白学习java的小白
运行总次数:0
代码可运行

webSocketServer:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

import org.springframework.stereotype.Component;

/**
 * WebSocketServer服务器端
 *
 * @author han
 *
 */
@Component
@ServerEndpoint("/WebSocketServer")
public class WebSocketServer {
    // concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象,若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
    private static CopyOnWriteArraySet<WebSocketServer> webSockets = new CopyOnWriteArraySet<WebSocketServer>();
    private Session session;

    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        webSockets.add(this);

    }

    @OnClose
    public void onClose() {
        webSockets.remove(this);

          }

    @OnMessage
    public void onMessage(String message) {
    }

    /**
     *
     * @param session
     * @param error
     */
    @OnError
    public void onError(Session session, Throwable error) {
        error.printStackTrace();
    }

    /**
     * 服务器主动推送消息
     */
    public void sendMessage(String message) {
        try {
            for (WebSocketServer webSocket : webSockets) {
                webSocket.session.getBasicRemote().sendText(message);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }




}

WebSocketConfig

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;


@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }

    /**
     * 注册webSocket端点
     */
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        // 添加一个/WebSocketServer端点,客户端就可以通过这个端点来进行连接;withSockJS作用是添加SockJS支持
        registry.addEndpoint("/WebSocketServer").setAllowedOrigins("*").withSockJS();
    }

}

jsp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
<body>
<audio src="${path}/webapp/music/msg.mp3" id="myaudio" controls="controls" loop="false" hidden="true"></audio>
<script>
      
  var websocket=null;
        if('WebSocket' in  window){
            websocket=new WebSocket('ws://localhost:8080/WebSocketServer');
        }else{
            layer.msg('该浏览器不支持websocket',{icon:2,time:1000});
        }
        websocket.onopen=function(event){
            console.info('建立连接');
        }
        websocket.onclose=function(event){
            console.info('关闭连接');
        }
        websocket.onmessage=function(event){
            if(event.data!=null){
                document.getElementById('myaudio').play();
                layer.confirm("您有新的消息请注意查收!", {
                    btn: ['确定','取消']
                }, function(){
                    closePlay();

                },function(){
                    closePlay();
                });
            }
            //弹框提醒,播放音乐
        }
        websocket.onerror=function(){
            console.info('websocket通讯发生错误!');
        }
        websocket.onbeforeunload=function(){
            websocket.close();
        }

        function autoPlay() {
            var myAuto = document.getElementById('myaudio');
            myAuto.play();
        }
        function closePlay() {
            var myAuto = document.getElementById('myaudio');
            myAuto.pause();
            myAuto.load();
        }
</script>
</body>
</html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WebSocket的实现与应用
首先,http协议的特点是无状态连接。即http的前一次连接与后一次连接是相互独立的。
用户11808537
2025/08/26
110
WebSocket的实现与应用
Spring Boot 集成 WebSocket,轻松实现信息推送!
在一次项目开发中,使用到了Netty 网络应用框架,以及 MQTT 进行消息数据的收发,这其中需要后台来将获取到的消息主动推送给前端,于是就使用到了MQTT,特此记录一下。
Java技术栈
2021/04/21
1.3K0
springboot整合篇-springboot整合websocket
ServerEndpoint的实现主要针对业务领域对websocket消息进行处理,主要使用@OnOpen对websocket连接建立时需要实现的逻辑,@OnClose对websocket连接关闭时需要实现的逻辑,@OnMessage对websocket收到消息时的处理以及@OnError对websocket发生错误时的处理方式。
Java开发者之家
2021/06/17
2.1K0
SpringBoot2整合WebSocket,实现后台向前端推送信息
WebSocket 协议是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
Li_XiaoJin
2022/06/12
3K0
SpringBoot2整合WebSocket,实现后台向前端推送信息
SprinBoot——SpringBoot项目WebSocket推送
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106472.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/04
9900
SpringBoot集成WebSocket,实现后台向前端推送信息
在一次项目开发中,使用到了Netty网络应用框架,以及MQTT进行消息数据的收发,这其中需要后台来将获取到的消息主动推送给前端,于是就使用到了MQTT,特此记录一下。
JAVA葵花宝典
2021/01/03
1.2K0
SpringBoot集成WebSocket,实现后台向前端推送信息
【websocket】spring boot 集成 websocket 的四种方式
这个配置类很简单,通过这个配置 spring boot 才能去扫描后面的关于 websocket 的注解
猿天地
2019/10/31
44.8K2
从零玩转Websocket实时通讯服务之前后端分离版本
前言 公司项目需要用到消息提示,那么WebSocket它来了经过我面向百度的学习,废话不多说直接开干. 后端搭建 一、依赖导入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> 二、搭建websocket服务 1.WebSocke
杨不易呀
2022/01/19
1.2K0
WebSocket实现群发和单聊--Springboot实现
    WebSocket是HTML5出的东西(协议,就是大家一起约定好的东西),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充。有交集,但是并不是全部。当然他们都属于网络的7层协议中的应用层。
chinotan
2019/06/02
2.3K0
java 实现 springboot项目 使用socket推送消息,前端实时进行接收后端推送的消息(亲测有效)
这里写目录标题 1 后端 1.1 添加依赖 1.2 创建配置类WebSocketConfig 1.3 创建WebSocketServer 1.4 测试类 2 前端接收 1 后端 1.1 添加依赖 在我们的springboot项目里面,添加依赖; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</a
一写代码就开心
2022/09/27
2.9K0
java 实现 springboot项目 使用socket推送消息,前端实时进行接收后端推送的消息(亲测有效)
SpringBoot集成WebSocket(原生注解方式)
WebSockets 它可以在用户的浏览器和服务器之间打开交互式通信会话。使用此API,可以向服务器发送消息并接收事件驱动的响应,而无需通过轮询服务器的方式以获得响应。 WebSocket 对象提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的API。 1.添加依赖 <!-- websocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot
甄士隐
2022/01/26
1.7K0
SpringBoot集成WebSocket(原生注解方式)
springboot整合websocket技术
简单来说就是一个基于TCP的持久化的网络通信协议。主要作用就是:服务端可以主动推送信息给客户端,不需要客户端重复的向服务端发请求查询。
海加尔金鹰
2020/06/09
1.2K0
实现websocket的两种方式
1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket
凯哥Java
2019/06/28
2K0
SpringBoot集成WebSocket的基本实现
此时我们第一反应,前端定时使用HTTP协议调用后端接口,刷新界面。OK,需求实现,下班回家!
用户10714507
2023/10/08
1.2K0
SpringBoot、Vue3 整合 WebSocket
WebSocket 是一种计算机通信协议,用于在Web应用程序中实现双向通信。它允许服务器和客户端之间建立持久连接,并且可以通过单个网络套接字进行全双工通信。与传统的HTTP请求-响应模型不同,WebSocket 使用事件驱动的模式,可以实时地在服务器和客户端之间传输数据。
默存
2023/09/13
1.5K0
SpringBoot、Vue3 整合 WebSocket
Spring+websocket+quartz实现消息定时推送
简单的说,websocket是真正实现了全双工通信的服务器向客户端推的互联网技术。
Vincent-yuan
2021/12/08
1.3K0
Spring+websocket+quartz实现消息定时推送
服务端常用的WebSocket框架
输入命令 需要修改的 url、groupId、artifactId、version
码客说
2021/01/20
1.5K0
SpringBoot整合websocket
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
用户3467126
2019/09/04
2.2K1
SpringBoot整合websocket
WebSocket | 为什么你前后端推送不会用?因为你少了WebSocket的帮忙
WebSocket是一种基于TCP的网络协议,实现了客户端和服务端的全双工通信,即,后端可以推送数据到客户端,客户端可以推送数据到后端。其模型如下所示:
netkiller old
2021/01/11
8670
WebSocket | 为什么你前后端推送不会用?因为你少了WebSocket的帮忙
SpringBoot2.0集成WebSocket,实现后台向前端推送信息
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。
全栈程序员站长
2022/08/18
1.4K0
SpringBoot2.0集成WebSocket,实现后台向前端推送信息
相关推荐
WebSocket的实现与应用
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入云开发企业交流群
企业云开发实战交流 探讨技术架构优化
加入[后端] 腾讯云技术交流站
后端架构设计 高可用系统实现
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验