当前位置: 首页 > news >正文

湖北山河建设集团网站2345网址是啥

湖北山河建设集团网站,2345网址是啥,德山经济开发区建设局网站,wordpress mysql用户名密码WebSocket 简介 WebSocket 协议是基于 TCP 的一种新的网络协议#xff0c;它实现了浏览器与服务器全双工#xff08;full-duplex#xff09;通信—允许服务器主动发送信息给客户端#xff0c;这样就可以实现从客户端发送消息到服务器#xff0c;而服务器又可以转发消息到客…WebSocket 简介 WebSocket 协议是基于 TCP 的一种新的网络协议它实现了浏览器与服务器全双工full-duplex通信—允许服务器主动发送信息给客户端这样就可以实现从客户端发送消息到服务器而服务器又可以转发消息到客户端这样就能够实现客户端之间的交互。对于 WebSocket 的开发Spring 也提供了良好的支持目前很多浏览器已经实现了 WebSocket 协议但是依旧存在着很多浏览器没有实现该协议为了兼容那些没有实现该协议的浏览器往往还需要通过 STOMP 协议来完成这些兼容。 下面我们在 Spring Boot 中集成 WebSocket 来实现服务端推送消息到客户端。 Spring Boot 集成 WebSocket 首先创建一个 Spring Boot 项目然后在 pom.xml 加入如下依赖集成 WebSocket dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId /dependency 开启配置 接下来在 config 包下创建一个 WebSocket 配置类 WebSocketConfiguration在配置类上加入注解 EnableWebSocket表明开启 WebSocket内部实例化 ServerEndpointExporter 的 Bean该 Bean 会自动注册 ServerEndpoint 注解声明的端点代码如下    Configuration EnableWebSocket public class WebSocketConfiguration {Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();} } 编写端点服务类 接下来使用 ServerEndpoint 定义一个端点服务类在端点服务类中可以定义 WebSocket 的打开、关闭、错误和发送消息的方法具体代码如下所示 package worn.xiao.riskmsg.service;import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils;import javax.websocket.*; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.atomic.AtomicInteger;ServerEndpoint(/websocket/{userId}) Component public class WebSocketServer {private static final Logger log LoggerFactory.getLogger(WebSocketServer.class);/*** 当前在线连接数*/private static AtomicInteger onlineCount new AtomicInteger(0);/*** 用来存放每个客户端对应的 WebSocketServer 对象*/private static ConcurrentHashMapString, WebSocketServer webSocketMap new ConcurrentHashMap();/*** 与某个客户端的连接会话需要通过它来给客户端发送数据*/private Session session;/*** 接收 userId*/private String userId ;/*** 连接建立成功调用的方法*/OnOpenpublic void onOpen(Session session, PathParam(userId) String userId) {this.session session;this.userId userId;if (webSocketMap.containsKey(userId)) {webSocketMap.remove(userId);webSocketMap.put(userId, this);} else {webSocketMap.put(userId, this);addOnlineCount();}log.info(用户连接: userId ,当前在线人数为: getOnlineCount());try {sendMessage(连接成功);} catch (IOException e) {log.error(用户: userId ,网络异常!!!!!!);}}/*** 连接关闭调用的方法*/OnClosepublic void onClose() {if (webSocketMap.containsKey(userId)) {webSocketMap.remove(userId);subOnlineCount();}log.info(用户退出: userId ,当前在线人数为: getOnlineCount());}/*** 收到客户端消息后调用的方法** param message 客户端发送过来的消息*/OnMessagepublic void onMessage(String message, Session session) {log.info(用户消息: userId ,报文: message);if (!StringUtils.isEmpty(message)) {try {JSONObject jsonObject JSONObject.parseObject(message);jsonObject.put(fromUserId, this.userId);String toUserId jsonObject.getString(toUserId);if (!StringUtils.isEmpty(toUserId) webSocketMap.containsKey(toUserId)) {webSocketMap.get(toUserId).sendMessage(jsonObject.toJSONString());} else {log.error(请求的 userId: toUserId 不在该服务器上);}} catch (Exception e) {e.printStackTrace();}}}/*** 发生错误时调用** param session* param error*/OnErrorpublic void onError(Session session, Throwable error) {log.error(用户错误: this.userId ,原因: error.getMessage());error.printStackTrace();}/*** 实现服务器主动推送*/public void sendMessage(String message) throws IOException {this.session.getBasicRemote().sendText(message);}public static synchronized AtomicInteger getOnlineCount() {return onlineCount;}public static synchronized void addOnlineCount() {WebSocketServer.onlineCount.getAndIncrement();}public static synchronized void subOnlineCount() {WebSocketServer.onlineCount.getAndDecrement();} } 其中ServerEndpoint(/websocket/{userId})表示让 Spring 创建 WebSocket 的服务端点其中请求地址是 /websocket/{userId}。 另外 WebSocket 一共有四个事件分别对应定义的 OnOpen、OnMessage、OnClose、OnError 注解。 OnOpen标注客户端打开 WebSocket 服务端点调用方法 OnClose标注客户端关闭 WebSocket 服务端点调用方法 OnMessage标注客户端发送消息WebSocket 服务端点调用方法 OnError标注客户端请求 WebSocket 服务端点发生异常调用方法 接下来启动项目使用 WebSocket 在线测试工具http://www.easyswoole.com/wstool.html进行测试有能力的也可以自己写个 html 测试。 测试html !DOCTYPE html html head meta charsetutf-8 titleJava后端WebSocket的Tomcat实现/title script typetext/javascript srcjs/jquery.min.js/script /head body div idmain stylewidth: 1200px;height:800px;/div Welcomebr/input idtext typetext / button onclicksend()发送消息/button hr/ button onclickcloseWebSocket()关闭WebSocket连接/button hr/ div idmessage/div /body script typetext/javascript var websocket null; //判断当前浏览器是否支持WebSocket if(WebSocket in window) { //改成你的地址 websocket new WebSocket(ws://192.168.100.196:8082/api/websocket/100); } else { alert(当前浏览器 Not support websocket) } //连接发生错误的回调方法 websocket.onerror function() { setMessageInnerHTML(WebSocket连接发生错误); }; //连接成功建立的回调方法 websocket.onopen function() { setMessageInnerHTML(WebSocket连接成功); } var U01data, Uidata, Usdata //接收到消息的回调方法 websocket.onmessage function(event) { console.log(event); setMessageInnerHTML(event); setechart() } //连接关闭的回调方法 websocket.onclose function() { setMessageInnerHTML(WebSocket连接关闭); } //监听窗口关闭事件当窗口关闭时主动去关闭websocket连接防止连接还没断开就关闭窗口server端会抛异常。 window.onbeforeunload function() { closeWebSocket(); } //将消息显示在网页上 function setMessageInnerHTML(innerHTML) { document.getElementById(message).innerHTML innerHTML br/; } //关闭WebSocket连接 function closeWebSocket() { websocket.close(); } //发送消息 function send() { var message document.getElementById(text).value; websocket.send({msg: message }); setMessageInnerHTML(message #13;); } /script /html 打开网页后在服务地址中输入ws://127.0.0.1:8088/websocket/xiaozhengwen点击开启连接按钮消息记录中会多一条由服务器端发送的连接成功记录。 接下来再打开一个网页服务地址中输入ws://127.0.0.1:8088/websocket/yangdandan点击开启连接按钮然后回到第一次打开的网页在消息框中输入 应用场景 1统计在线人数 2后台页面向客户端发送主动发送数据支持单发和群发
http://www.pierceye.com/news/133655/

相关文章:

  • 莱芜 网站wordpress 关闭警告
  • 深圳做棋牌网站建设哪家技术好建设一个网站的规划
  • 网站开发流程比较合理网站已经申请了域名 接下来怎么
  • 校园电商平台网站建设网站网址模板
  • 沈阳有资质做网站的公司温州做网站定制
  • wordpress codex网站seo和sem是什么意思
  • 建网站平台哪家好装修设计软件app排行
  • 网站开发文档撰写企业管理培训课程图片
  • 网站开发公司资质wordpress文章管理模板
  • 建筑网站知识大全江苏有哪些网站建设的公司
  • 江汉网站建设用js做网站登录
  • wordpress做购物网站河南省建设工程造价协会网站
  • wex5可以做网站吗爱射影院网站建设中
  • 网站建设多选题百度文库做好中心网站建设工作总结
  • 网站开发都用phpwordpress文章内图片幻灯片
  • 岳阳网站建设企业绿色大气漂亮dedecms茶叶企业网站
  • 网站建设使用虚拟主机的优点与缺点做百科网站
  • 网站被墙是谁做的电影网站模板
  • 合肥建设网官方网站网页设计网站制作公司
  • 外贸网站建设评价网站的营销方案
  • 邯郸专业做wap网站中国设计网址导航
  • 邯郸移动网站建设价格官方网站车联网是谁做
  • 哪个网站可以做高像素动图个人网站排版设计
  • 多少网站域名采用中文做一个电子商务网站在哪里做
  • 家装设计学校沈阳网站建设优化企业
  • 网站开发公司售后服务触屏端网站开发
  • 建设银行网站注销吗网页制作作品
  • 家具网站建设目的及功能定位网页游戏在哪里制作
  • 高端网站开发步骤网站设计制作如何评价
  • 漳州企业网站建设制作做发型的网站