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

沈阳做网站优化哪家好做网站流量钱谁给

沈阳做网站优化哪家好,做网站流量钱谁给,游戏网页界面设计,南通网站建设要多少钱1.业务背景 负责的项目有一个搜索功能#xff0c;搜索的范围几乎是全表扫#xff0c;且数据源类型贼多。目前对搜索的数据量量级未知#xff0c;但肯定不会太少#xff0c;不仅需要搜索还得点击下载文件。 关于搜索这块类型 众多#xff0c;未了避免有个别极大数据源影响整…1.业务背景 负责的项目有一个搜索功能搜索的范围几乎是全表扫且数据源类型贼多。目前对搜索的数据量量级未知但肯定不会太少不仅需要搜索还得点击下载文件。 关于搜索这块类型 众多未了避免有个别极大数据源影响整个搜索效率我采用多线程异步搜索将搜索到每个数据源数据使用 websocket 响应给前端。 2.遇到的问题 1 .想自定义接收前端消息的类型因为接收的消息类型都是string 类型所以一看肯定不符合我的需求。唉怪我没多问 思路 其实接收是string一点不影响。直接上json转对象就行。 2. socket 什么时候关闭  思路 1.心跳包检测心跳达到次数断开socket。前后端互发心跳 2. 因为多线程后端开启线程监听线程有没有执行完的队列还有没有还没执行的任务没有开始计时达到时间关闭socket若计时期间有任务重置计时。后端监听 3.相关资料 一文搞懂四种 WebSocket 使用方式_enablewebsocket_Java架构狮的博客-CSDN博客 4.代码实现 1.注解写法 /*** 开启WebSocket支持* Created by huiyunfei on 2019/5/31.*/ Configuration EnableWebSocket public class WebSocketConfig implements ServletContextInitializer {Beanpublic ServerEndpointExporter serverEndpointExporter() {ServerEndpointExporter serverEndpointExporter new ServerEndpointExporter();return serverEndpointExporter;}/*** 启动加载** param servletContext*/Overridepublic void onStartup(ServletContext servletContext) {servletContext.addListener(WebAppRootListener.class);// 接收base64的字符串,等于50M 解决上传内容过大问题servletContext.setInitParameter(org.apache.tomcat.websocket.textBufferSize, 52428800);servletContext.setInitParameter(org.apache.tomcat.websocket.binaryBufferSize, 52428800);}} OnOpenpublic void onOpen(Session session) {System.out.println(与前端建立了WebSocket连接);this.session session;webSocketSet.add(this); //加入set中 // addOnlineCount(); //在线数加1 // log.info(有新窗口开始监听:sid,当前在线人数为 getOnlineCount());this.sidsid;try {sendMessage(连接成功);} catch (IOException e) {log.error(websocket IO异常);}}OnMessagepublic void handleMessage(Session session, String message) throws IOException {session.getBasicRemote().sendText(Reversed: new StringBuilder(message).reverse());}OnClosepublic void onClose(Session session) {System.out.println(与前端断开了WebSocket连接);}OnErrorpublic void onError(Throwable throwable) {throwable.printStackTrace();} 注意谁说是注解开发切记并不是发送http请求下面是错误实例 上面我不是提到想自定义接收参数然后我一直以为加个注解就行。接收类型别动。 不然就像苦逼的我程序都启动不了排错半天时间。 OnMessagepublic void onMessage(Session session, FullSearchParam param) {System.out.println(接收到前端发送的消息 param.getSearchContext());try { // fullSearch(param, session);} catch (IOException e) {e.printStackTrace();} catch (EncodeException e) {throw new RuntimeException(e);}} 2.实现接口 package com.trinity.web.controller.search.spring;import org.springframework.beans.factory.annotation.Autowired; 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;/*** 开启WebSocket支持* Created by huiyunfei on 2019/5/31.*/ Configuration EnableWebSocket public class SpringSocketConfig implements WebSocketConfigurer {Autowiredprivate SpringSocketHandle springSocketHandle;Autowiredprivate SpringAbstractWebSocketHandler springAbstractWebSocketHandler;Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(springSocketHandle, /spring-ws).setAllowedOrigins(*).addHandler(springAbstractWebSocketHandler, /spring-ws1).setAllowedOrigins(*);}}这种方式接收消息需要判断因为 WebSocketMessage 是接口spring 提供了三个实现类分别是文本 字节 ping目前后两种还不知道怎么使用。所以这种方式需要区判断前端传输的数据类型分别处理。 Component public class SpringSocketHandle implements WebSocketHandler {/*** 连接成功后调用。* param session* throws Exception*/Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {System.out.println(SpringSocketHandle, 收到新的连接: session.getId());}/*** 处理发送来的消息** param session* param message* throws Exception*/Overridepublic void handleMessage(WebSocketSession session, WebSocketMessage? message) throws Exception {String msg SpringSocketHandle, 连接 session.getId() 已收到消息。;System.out.println(msg); // this.handleMessage(session, );session.sendMessage(new TextMessage(msg));}/*** WS 连接出错时调用** param session* param exception* throws Exception*/Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {System.out.println(WS 连接发生错误);}/*** 连接关闭后调用** param session* param closeStatus* throws Exception*/Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {System.out.println(WS 关闭连接);}/*** 支持分片消息** return*/Overridepublic boolean supportsPartialMessages() {return false;} 这种方式就更加简单不需要我们自己去判断 Slf4j Component public class SpringAbstractWebSocketHandler extends AbstractWebSocketHandler {/*** 业务service*/Autowiredprivate IDampDatasourceInfoService dampDatasourceInfoService;Autowiredprivate IDampAssetInfoService dampAssetInfoService;Autowiredprivate SearchThreadPool searchThreadPool;Autowiredprivate TokenService tokenService;/*** 静态变量用来记录当前在线连接数。应该把它设计成线程安全的。*/private static int onlineCount 0;/*** concurrent包的线程安全Set用来存放每个客户端对应的MyWebSocket对象。*/private static CopyOnWriteArraySetSearchSocketServer webSocketSet new CopyOnWriteArraySetSearchSocketServer();/*** 与某个客户端的连接会话需要通过它来给客户端发送数据*/private Session session;protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {log.info(接收到搜索的消息,搜索内容为{},message);ListString authorization session.getHandshakeHeaders().get(Authorization);FullSearchParam param JSONObject.parseObject(message.getPayload(), FullSearchParam.class);fullSearch(param, session);}protected void handleBinaryMessage(WebSocketSession session, BinaryMessage message) throws Exception {}protected void handlePongMessage(WebSocketSession session, PongMessage message) throws Exception {} 5.总结 尝试写不会的代码总是非常的认真但也非常煎熬。 然后接收消息时用到了 SecurityUtils 公共方法 从token 获取用户id但是却出现获取失败。 明天再看 public class SecurityUtils {/*** 用户ID**/public static Long getUserId(){try{return getLoginUser().getUserId();}catch (Exception e){throw new ServiceException(获取用户ID异常, HttpStatus.UNAUTHORIZED);}}/*** 获取用户**/public static LoginUser getLoginUser(){try{return (LoginUser) getAuthentication().getPrincipal();}catch (Exception e){throw new ServiceException(获取用户信息异常, HttpStatus.UNAUTHORIZED);}} /*** 获取Authentication*/public static Authentication getAuthentication(){return SecurityContextHolder.getContext().getAuthentication();}
http://www.hkea.cn/news/14536346/

相关文章:

  • pytson做网站安全吗重庆市建设工程信息网上查询
  • 福田做网站优化乐云seo微官网和小程序有什么区别
  • 做搜狐网站页面石家庄seo网站推广
  • 马鞍山网站开发番禺做网站哪家强
  • 海外海外网站建设wordpress模板大全
  • 在百度上注册公司网站要多少钱二级网站域名解析
  • 济南外贸网站保定网络营销推广
  • 哪里有手机网站建设联系方式网站未经授权推广别人的产品
  • 广州知名网站建设性价比高网站名称怎么变更
  • 网站 建设后台WordPress知更鸟主题怎样安装
  • 27寸显示器网站建设seo营销型网站推广
  • 象山县建设局网站企业网站开发创意
  • 网站域名被注册网站开发历史
  • 制作网站专业app推广团队
  • 如何查看一个网站做的外链简洁wordpress 杂志
  • 体育器材网站建设方案用jsp做的网站需要什么工具
  • 做网站用域名不备案怎么弄做网站有自己的服务器
  • 滨州 网站开发科技公司网站欣赏
  • 合肥网站开发需要多网站服务器技术
  • 怎么在网站里做宣传做的最好的门户网站
  • 网站导航栏固定mysql做网站怎么查看数据库
  • 绮思网站建设qswoo注册一个空壳公司养着
  • 药品和医疗器械 网站备案discuz与wordpress
  • 推进网站集约化建设制度软件定制报价单
  • 网站建设与制作实验报告广告设计服务
  • 保亭交通工程建设局网站wordpress添加视频
  • 商业网站推广外贸seo网站搭建
  • 英文外贸网站建设推广国外有什么优秀的网站推荐
  • 仿站是什么在线做数据图的网站
  • 外贸soho怎么做网站公司页面图片