文章目录
概述
HTML5中的WebSocket
问题一
在跳羚中访问静态页面
Java 语言(一种计算机语言,尤用于创建网站)语言(一种计算机语言,尤用于创建网站)支持WebSocket
问题一
问题2
案例源码
概述
应用场景:
消息推送,替代创建交互式、快速动态网页应用的网页开发技术轮询。在线聊天WebSocket是HTML5提供的在单个传输控制协议(传输控制协议)链接上进行全双工通讯的协议。
客户端请求
连接:升级表示客户端希望升级连接升级: websocket表示希望升级到websocket协议请求URL : ws ://127。0 .0 .1:8080/WebSocket/88274。1:80808
请求方法:获取
连接:升级
升级: websocket
秒-网络套接字-版本: 13
sec-WebSocket-Key : Uzqa3d qq8 zeb v2ol 4 nxo AQ==
sec-WebSocket-扩展s 3360 permessage-deflate;客户端_最大_窗口_位
服务端响应
升级: websocket
连接:升级
sec-web套接字-接受: fl7b 8 k4er ui8 bempzvn 91 wtktqk=
sec-WebSocket-扩展s 3360 permessage-deflate;client _ max _ window _ bits=15
HTML5 中的 WebSocket
WebSocket的属性ws.readyState当前连接状态
0 连接未建立一连接已建立,可以正常通信2连接正在关闭3连接已关闭或连接不能打开ws.bufferedAmount已被发送()放入正在队列中等待传输,但是还没有发出的UTF-8文本字节数WebSocket的事件
ws.onopen建立连接后的回调函数ws.onmessage收到服务端消息的回调函数ws.onerror通信错误的回调函数ws.onclose连接关闭的回调函数WebSocket的方法
ws.send(数据)发送数据ws.close()关闭连接使用
//创建链接
var ws=new WebSocket(url,[协议]);
//建立连接后的回调函数
ws.onopen=函数(事件){ 0
};
//收到服务端消息的回调函数
ws.onmessage=函数(事件){ 0
};
//通信错误的回调函数
ws.onerror=函数(事件){ 0
};
//连接关闭的回调函数
ws.onclose=函数(事件){ 0
}
//发送数据
函数发送(){ 0
ws。发送(JSON。stringify(message));
}
//关闭连接
函数closeWebSocket(){ 0
ws。close();
}
问题一
未能构造"网络套接字":网址的方案必须是ws或wss .不允许本地主机.统一资源定位器协议不要忽略《华盛顿明星报》或wss分别对应超文本传送协议(超文本传输协议的缩写)与https的区别
在 springboot 中访问静态页面
index.html文件放置位置资源/静态/索引。超文本标记语言直接访问地址:localhost:8080/index.html
跳羚在资源文件夹下有两个默认文件夹
静电存放静态页面模板存放动态页面,需要配合百里香叶使用
Java 支持 WebSocket
添加弹簧靴启动器websocket依赖属国
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-web套接字/artifactId
/依赖性
定义监听端点,和监听事件(与前端的监听事件相同)
@ ServerEndpoint('/WebSocket/{ sid } ')
@组件
公共类WebSocketServer {
//事件
@OnOpen
公共void onOpen(会话会话,@PathParam('sid ')字符串sid) {}
@OnMessage
公共无效消息(会话会话,字符串消息){}
@OnError
公共void onError(会话会话,可抛出错误){}
@OnClose
public void onClose() {}
//方法
私有会话会话;//客户端连接对象
public void fun(){ 0
//发送消息
this.session.getBasicRemote().发送文本(消息);
//关闭连接
这个。会话。close();
}
}问题一
index.html:22与" ws ://127。0 .0 .1:8080/WebSocket/10000 "的webSocket连接失败:在web套接字握手过程中出错:意外响应代码: 404
在使用跳羚内置的雄猫容器时,需要注入服务器端点导出器,这个豆中的注册点数()方法会将@服务器端点注解的豆添加到服务器容器容器中。
ServerEndpointExporter是由弹簧靴启动器websocket提供的,并且这个项目的子项目中包含起始网,所以单独做一个websocket时只需要依赖启动器-websocket即可
@配置
公共类WebSocketConfig {
/**
* 使用内置雄猫需要定义豆
*不需要外部,否则会出错。
*/
@豆
public server endpointexporter server endpointexporter(){ 0
返回新的ServerEndpointExporter();
}
}
如果仍然失败,您需要检查这个类是否注册为bean。@Component注释是必需的。@ServerEndpoint不会生成bean,bean是Tomcat中的注释,代表服务侦听端点的地址。
@ ServerEndpoint('/WebSocket/{ sid } ')
@组件
公共类WebSocketServer {}
因为ServerEndpointExporter在注册时会查找所有bean。
受保护的void RegisterEndPointS(){ 0
string[]endpointBeanNames=context . getbeannamesforannotation(serverendpoint . class);
}
问题 2
连接错误导致断线。在服务器的onMessage方法中引发一个未捕获的异常将触发onError事件,然后触发onClose事件。最终,客户端的onClose事件也会被触发。
客户端onMessage方法中异常不会触发其他监听事件。
00-1010代码云:源代码参考门户
实现当前在线号码显示。
引用WebController中的SendGroup可以转换为客户端的主动消息推送。
参考群消息可以转化为群聊和个人聊天。
参考:
HTML5网络套接字
SpringBoot如何返回页面
跳跳页面详细解释百里香叶
用JAVA分别实现网络套接字客户端和服务器端
文章结束了,喜欢的大家关注一下,谢谢大家的支持,谢谢!