记录一下第一次webSocket通信成功
webSocket前端代码
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>websocket</title>
</head> <body> <script>
let websocket = null; if (typeof WebSocket != 'undefined') {
websocket = new WebSocket('ws://localhost:9701/webSocket');
console.log("您的浏览器支持Websocket通信协议");
}else{
alert("您的浏览器不支持Websocket通信协议,请使用Chrome或者Firefox浏览器!")
}
websocket.onopen = function (event) {
console.log('建立链接');
} websocket.onclose = function (event) {
console.log('链接关闭');
} websocket.onmessage = function (event) {
console.log('收到消息:' + event.data);
// 弹窗 播放音乐
} websocket.onerror = function () {
console.log('websocket通信发生错误。');
} websocket.onbeforeunload = function () {
websocket.close();
}
</script>
</body> </html>
后端代码
package com.pls.bid.preparation.utils; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet; /**
* @Description WebSocket 通信工具类
* @Author wwwang <1825153451@qq.com>
* @Version V1.0.0
* @Since 1.0
* @Date 2021/9/1
* 你我山巅自相逢
*/
@Component
@ServerEndpoint("/webSocket")
@Slf4j
public class WebSocket { private Session session; private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<>(); /**
* 检测链接
* @param session
*/
@OnOpen
public void onOpen(Session session){
this.session = session;
webSocketSet.add(this);
log.info("[ WebSocket消息 ] 有新的链接,总数:{}",webSocketSet.size());
} /**
* 检测链接断开
*/
@OnClose
public void onClose(){
webSocketSet.remove(this);
log.info("[ WebSocket消息 ] 链接断开,总数:{}",webSocketSet.size());
} /**
* 接收消息
* @param message
*/
@OnMessage
public void onMessage(String message){
log.info("[ WebSocket消息 ] 收到来自客户端发来的消息:{}",message);
} /**
* 给指定客户端发送消息
* @param message
*/
public void sendMessage(String message,WebSocket webSocket){
log.info("[ WebSocket消息 ] 广播消息,message={}",message);
try {
webSocket.session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 广播消息
* @param message
*/
public void sendMessage(String message){
for (WebSocket webSocket : webSocketSet) {
log.info("[ WebSocket消息 ] 广播消息,message={}",message);
try {
System.out.println(webSocket.session.toString());
webSocket.session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
} }
webSocketConfig配置类
package com.pls.bid.preparation.config; import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.server.standard.ServerEndpointExporter; /**
* @Description 描述
* @Author wwwang <1825153451@qq.com>
* @Version V1.0.0
* @Since 1.0
* @Date 2021/9/2
* 你我山巅自相逢
*/
@Component
public class WebSocketConfig { /**
* 使用spring boot时 使用的是spring-boot的内置容器
* 如果要使用webSocket,需要注入ServerEndpointExporter
* @return
*/
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
可能发生的错误
websocket.html:17 WebSocket connection to 'ws://localhost:9701/webSocket' failed:
解决方法
//在安全框架中放行
"/webSocket/**"
// 添加上述配置类
记录一下第一次webSocket通信成功的更多相关文章
- js判断是否安装某个android app,没有安装下载该应用(websocket通信,监听窗口失去焦点事件)
现在经常有写场景需要提示用户下载app, 但是如果用户已经安装,我们希望是直接打开app. 实际上,js是没有判断app是否已经安装的方法的,我们只能曲线救国. 首先,我们需要有call起app的sc ...
- Springboot集成WebSocket通信全部代码,即扣即用。
websocket通信主要来自两个类以及一个测试的html页面. MyHandler 和 WebSocketH5Config,下面全部代码 MyHandler类全部代码: package com.un ...
- 【Java Web开发学习】Spring MVC整合WebSocket通信
Spring MVC整合WebSocket通信 目录 ========================================================================= ...
- 京信通信成功打造自动化工厂(MES应用案例)
企业介绍: 京信通信成立于1997年,是一家集研发.生产.销售及服务于一体的移动通信外围设备专业厂商,致力于为客户提供无线覆盖和传输的整体解决方案,于2003年在香港联交所主板上市(2342.HK), ...
- 把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_202 "表达欲"是人类成长史上的强大"源动力",恩格斯早就直截了当地指出,处在蒙昧时代即低 ...
- ucenter 显示通信成功的条件
应用的主 URL+/api/uc.php?code= 如果这个页面返回1,则通信成功,也就是说,uc.php是通信成功里重要的一环 事实上,我还没有通信成功,我只是写了一个1在欺骗服务端
- C#(SuperWebSocket)与websocket通信
原文:C#(SuperWebSocket)与websocket通信 客户端代码 点击可以查看一些关于websocket的介绍 <!DOCTYPE html> <html> &l ...
- websocket通信1009错误,
问题说明: springboot继承 WebSocketConfigurer实现websocket通信服务,服务器端报错,"The decoded text message was too ...
- Python3+WebSockets实现WebSocket通信
一.说明 1.1 背景说明 前段时间同事说云平台通信使用了个websocket的东西,今天抽空来看一下具体是怎么个通信过程. 从形式上看,websocket是一个应用层协议,socket是数据链路层. ...
- webSocket通信
针对webSocket通信总结: 1.webSocket通信原理图: 2.webSocket通信实例 参考地址1:https://www.cnblogs.com/cjm123/p/9674506.ht ...
随机推荐
- WPF 更改 DrawingVisual 的 RenderOpen 用到的对象的内容将持续影响渲染效果
在 WPF 里面,可以通过 DrawingVisual 来进行使用底层的绘制方法,此方法需要调用 DrawingVisual 的 RenderOpen 拿到 DrawingContext 类型的对象, ...
- 2019-10-28-dotnet-代码调试方法
title author date CreateTime categories dotnet 代码调试方法 lindexi 2019-10-28 08:50:11 +0800 2019-6-5 9:4 ...
- 【Flink入门修炼】2-3 Flink Checkpoint 原理机制
如果让你来做一个有状态流式应用的故障恢复,你会如何来做呢? 单机和多机会遇到什么不同的问题? Flink Checkpoint 是做什么用的?原理是什么? 一.什么是 Checkpoint? Chec ...
- Go-Zero技能提升:深度探究goctl的妙用,轻松应对微服务开发挑战!(三)
前言 有位同学在群里说:"Go-Zero官方文档太简洁了,对小白有点不友好.好奇你们是怎么学习的?项目是怎么封装的?有什么提高开发效率的技巧吗?". 来来来,这期内容给你安排上,先 ...
- JavaScript面向对象的继承应用
面向对象语言的三大特征:继承.封装.多态 <!DOCTYPE html> <html> <head> <title>Extend-OPP</tit ...
- 不同模式下删除Oracle数据表的三个实例
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理
C++ 资源列表,内容包括: 标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等 目录 进程间通信 Json 日志 机器学习 数学 内存分配 多媒体 网络 PDF 物理学 ...
- ༺$Musique Collection 1$༻
~~头图~~ 自取捏 <\(Landslide\)>-\(Oh\,Wonder\) I know it hurts sometimes but You'll get over it You ...
- C 语言编程 — 基本数据类型
目录 文章目录 目录 前文列表 数据类型 基本数据类型 整型 浮点型 前文列表 <程序编译流程与 GCC 编译器> <C 语言编程 - 基本语法> 数据类型 数据类型,即数据对 ...
- 树莓派 ubuntu server 22.x 连接无线网络
前言 树莓派系统安装完成后,需要配置网络,由于家里没有多余的网线(网线多少有点乱),所以决定配置无线上网的方式,现在记录下来操作过程 具体操作 sudo nano /etc/netplan/xxxxx ...