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

wordpress子目录多站点设置网站 盈利模式

wordpress子目录多站点设置,网站 盈利模式,台州网站建设咨询,安徽中色十二冶金建设有限公司网站1.基于java注解实现websocket服务器端 1.1需要的类 1.1.1服务终端类 用java注解来监听连接ServerEndpoint、连接成功OnOpen、连接失败OnClose、收到消息等状态OnMessage 1.1.2配置类 把spring中的ServerEndpointExporter对象注入进来 2.1代码示例 2.1.1 maven配置 … 1.基于java注解实现websocket服务器端 1.1需要的类 1.1.1服务终端类 用java注解来监听连接ServerEndpoint、连接成功OnOpen、连接失败OnClose、收到消息等状态OnMessage 1.1.2配置类 把spring中的ServerEndpointExporter对象注入进来 2.1代码示例 2.1.1 maven配置 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.heima/groupIdartifactIdws-demo/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.7.3/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.16.22/version/dependency!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactIdversion2.7.14/version/dependency/dependencies/project 2.1.2 WsServerEndpoint类 package com.heima;import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; 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.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap;/**** 监听websocket地址 /myWs*/ ServerEndpoint(/myWs) Component Slf4j EnableScheduling public class WsServerEndpoint {static MapString,Session map new ConcurrentHashMapString,Session();/**** 连接建立时执行的操作* param session*/OnOpenpublic void onOpen(Session session){map.put(session.getId(),session);log.info(websocket is open);}/**** 收到客户端消息执行的操作* param text*/OnMessagepublic String OnMessage(String text){log.info(收到了一条信息text);return 已收到你的信息 ;}/**** 连接关闭时执行的操作* param session*/OnClosepublic void OnClose(Session session){map.remove(session.getId());log.info(连接关闭时执行的操作);}/**** 向客户端发送信息*/Scheduled(fixedRate 2000)public void sendMsg() throws IOException {for (String key : map.keySet()){map.get(key).getBasicRemote().sendText(你好你好);}} }2.1.3 WebSocketConfig package com.heima;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter;Configuration public class WebSocketConfig {Beanpublic ServerEndpointExporter serverEndpointExporter(){return new ServerEndpointExporter();}}2.1.3 前端测试代码 !DOCTYPE html html langen headmeta charsetUTF-8titlewsClient/title /head bodyscript// 创建websocketlet ws new WebSocket(ws://localhost:8080/myWs)//向服务器发送hellows.onopenfunction (){ws.send(hello)}//监听数据ws://localhost:8080/myWsws.onmessagefunction (message){console.log(message.data)} /script /body /html 2.1.4测试结果 2.1.4.1 当打开浏览器时 2.1.4.2 当关闭浏览器时 2.1.4.3 当刷新浏览器的时候 2.基于spring提供的类和接口刷新websocket服务器端 2.1HttpSessionHandShakeInter 握手拦截器 package com.spring;import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;import java.util.Map;/**** 握手拦截器*/ Component Slf4j public class MyWsInterceptor extends HttpSessionHandshakeInterceptor {Overridepublic boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, MapString, Object attributes) throws Exception {log.info(request.getRemoteAddress().toString()开始握手);return super.beforeHandshake(request, response, wsHandler, attributes);}Overridepublic void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex) {log.info(request.getRemoteAddress().toString()完成握手);super.afterHandshake(request, response, wsHandler, ex);} }2.2  MyWsHandler 主处理程序 sessionbean封装类 import lombok.AllArgsConstructor; import lombok.Data; import org.springframework.web.socket.WebSocketSession;Data AllArgsConstructor public class SessionBean {private WebSocketSession webSocketSession;private Integer clientId; }主处理程序 package com.spring;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.web.servlet.server.Session; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.AbstractWebSocketHandler;import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger;/**** webSocket 主处理程序*/ Component Slf4j EnableScheduling public class MyWsHandler extends AbstractWebSocketHandler {//map有并发线程问题 所以用ConcurrentHashMapprivate static MapString, SessionBean map ;//id有并发问题 所以用Integer的安全类型private static AtomicInteger clientIdMaker;static {map new ConcurrentHashMap();clientIdMakernew AtomicInteger(0);}//连接建立Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {super.afterConnectionEstablished(session);//将session 进一步封装 id采用的是自增SessionBean sessionBean new SessionBean(session, clientIdMaker.getAndIncrement());map.put(session.getId(),sessionBean);log.info(map.get(session.getId()).getClientId()建立了连接);}//收到消息Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {super.handleTextMessage(session, message);log.info(map.get(session.getId()).getClientId():message.getPayload());}//传输异常Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {super.handleTransportError(session, exception);if (session.isOpen()){session.close();}map.remove(session.getId());}//连接关闭Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {super.afterConnectionClosed(session, status);log.info(map.get(session.getId()).getClientId()关闭连接);}/**** 向客户端发送信息*/Scheduled(fixedRate 2000)public void sendMsg() throws IOException {for (String key : map.keySet()){map.get(key).getWebSocketSession().sendMessage(new TextMessage(hello, spring socket));}} }2.3 WebSocketConfigurer 注册拦截器和主处理程序以及监听路径 package com.spring;import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.config.annotation.EnableWebSocket; import org.springframework.web.socket.config.annotation.WebSocketConfigurer; import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;import javax.annotation.Resource;Configuration EnableWebSocket public class MyWsConfig implements WebSocketConfigurer {Resourceprivate MyWsHandler wsHandler;Resourceprivate MyWsInterceptor wsInterceptor;Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(wsHandler,/myWs1).addInterceptors(wsInterceptor).setAllowedOriginPatterns(*);} }2.4 前端测试 !DOCTYPE html html langen headmeta charsetUTF-8titlewsClient/title /head bodyscript// 创建websocketlet ws new WebSocket(ws://localhost:8080/myWs1)//向服务器发送hellows.onopenfunction (){ws.send(hello)}//监听数据ws://localhost:8080/myWsws.onmessagefunction (message){console.log(message.data)} /script /body /html
http://www.pierceye.com/news/911980/

相关文章:

  • 广州手机建设网站wordpress 读者墙
  • 大桥石化集团网站谁做的wordpress建站吗
  • 手机行业网站做网站用什么环境
  • 百度做网站刷排名国外做图标网站
  • 常州好的网站设计公司企业策划方案怎么做
  • 厂房出租做推广什么网站好网站做自适应的好处
  • 网站木马文件删除青岛黄岛网站建设公司电话
  • 一个网站做网站地图的目的企业网站建设框架图
  • 网站建设 swot分析深圳市龙华区繁华吗
  • h5 小米网站模板直接通过ip访问网站
  • 公司建设个网站制作装饰公司网站
  • 高质量的网站内容建设做网站信科网站建设
  • 网站建设倒计时模板学校室内设计效果图
  • 海东营销网站建设公司东莞网络优化排名
  • 株洲网站建设服务建筑公司怎么注册
  • 心理学网站的建设网站开发公司比较有名
  • 需要做网站设计海南网页制作
  • 开发网站有什么用仿站小工具官网
  • 支付宝网站登录入口个人微信公众号如何推广
  • 北京网站制作net2006常见的营销型网站
  • 设计建设网站公司天津市建设信息网官网
  • 企业网站建站 费用比较有名的个人网站
  • 网站规划与开发设计企业班组建设案例
  • 招聘网站开发设计做网站 免费字体
  • 网站上传程序流程桐城住房和城乡建设局网站
  • 回力网站建设初衷ps可以做网站吗
  • 广州网站建设市场佛山专业做网站公司哪家好
  • 四川省凉亭建设工程有限公司网站的博客wordpress
  • 搭建一个网站需要多少钱?如何做网站二级域名
  • 广德县住房和城乡建设网站wordpress网站维护教程