<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        微信小程序 websocket 實現SpringMVC+Spring+Mybatis

        來源:懂視網 責編:小采 時間:2020-11-27 22:33:18
        文檔

        微信小程序 websocket 實現SpringMVC+Spring+Mybatis

        微信小程序 websocket 實現SpringMVC+Spring+Mybatis:微信小程序實現websocket步驟: 后臺: 1. 添加maven依賴 2. 創建握手 3. 創建處理器 4. spring配置(xml配置或javabean方式配置任選一種) 微信小程序: 1. 書寫連接 java后臺 1.添加maven依賴 <!-- websocket --> &
        推薦度:
        導讀微信小程序 websocket 實現SpringMVC+Spring+Mybatis:微信小程序實現websocket步驟: 后臺: 1. 添加maven依賴 2. 創建握手 3. 創建處理器 4. spring配置(xml配置或javabean方式配置任選一種) 微信小程序: 1. 書寫連接 java后臺 1.添加maven依賴 <!-- websocket --> &

        微信小程序實現websocket步驟:

        后臺:

         1. 添加maven依賴
         2. 創建握手
         3. 創建處理器
         4. spring配置(xml配置或javabean方式配置任選一種)

        微信小程序:

         1. 書寫連接

        java后臺

        1.添加maven依賴

         <!-- websocket -->
         <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-websocket</artifactId>
         <version>${spring.version}</version>
         </dependency>
         <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-messaging</artifactId>
         <version>${spring.version}</version>
         </dependency>
        
         <!-- 其中spring版本 -->
         <!-- 注意spring版本一定要為4以上版本 -->
         <spring.version>4.3.7.RELEASE</spring.version>
        
        

        2.創建握手

        package com.ahutshop.websocket;
        
        import java.util.Map;
        
        import javax.servlet.http.HttpServletRequest;
        import org.springframework.http.server.ServerHttpRequest;
        import org.springframework.http.server.ServerHttpResponse;
        import org.springframework.http.server.ServletServerHttpRequest;
        import org.springframework.web.socket.WebSocketHandler;
        import org.springframework.web.socket.server.HandshakeInterceptor;
        
        /**
         * 此類用來獲取登錄用戶信息并交由websocket管理
         */
        public class MyWebSocketInterceptor implements HandshakeInterceptor {
        
         @Override
         public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse arg1, WebSocketHandler arg2,
         Map<String, Object> arg3) throws Exception {
         // 將ServerHttpRequest轉換成request請求相關的類,用來獲取request域中的用戶信息
         if (request instanceof ServletServerHttpRequest) {
         ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
         HttpServletRequest httpRequest = servletRequest.getServletRequest();
        
         }
        
         System.out.println("連接到我了");
        
         return true;
         }
        
         @Override
         public void afterHandshake(ServerHttpRequest arg0, ServerHttpResponse arg1, WebSocketHandler arg2, Exception arg3) {
         // TODO Auto-generated method stub
        
         }
        
        }
        
        

        3.創建處理器

        package com.ahutshop.websocket;
        
        import java.io.IOException;
        import java.util.ArrayList;
        import java.util.List;
        
        import org.springframework.web.socket.CloseStatus;
        import org.springframework.web.socket.TextMessage;
        import org.springframework.web.socket.WebSocketHandler;
        import org.springframework.web.socket.WebSocketMessage;
        import org.springframework.web.socket.WebSocketSession;
        
        public class WebSocketPushHandler implements WebSocketHandler {
         private static final List<WebSocketSession> users = new ArrayList<>();
        
         // 用戶進入系統監聽
         @Override
         public void afterConnectionEstablished(WebSocketSession session) throws Exception {
         System.out.println("成功進入了系統。。");
         users.add(session);
        
         sendMessagesToUsers(new TextMessage("今天晚上服務器維護,請注意"));
         }
        
         //
         @Override
         public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
         // 將消息進行轉化,因為是消息是json數據,可能里面包含了發送給某個人的信息,所以需要用json相關的工具類處理之后再封裝成TextMessage,
         // 我這兒并沒有做處理,消息的封裝格式一般有{from:xxxx,to:xxxxx,msg:xxxxx},來自哪里,發送給誰,什么消息等等
         // TextMessage msg = (TextMessage)message.getPayload();
         // 給所有用戶群發消息
         //sendMessagesToUsers(msg);
         // 給指定用戶群發消息
         //sendMessageToUser(userId, msg);
        
         }
        
         // 后臺錯誤信息處理方法
         @Override
         public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        
         }
        
         // 用戶退出后的處理,不如退出之后,要將用戶信息從websocket的session中remove掉,這樣用戶就處于離線狀態了,也不會占用系統資源
         @Override
         public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
         if (session.isOpen()) {
         session.close();
         }
         users.remove(session);
         System.out.println("安全退出了系統");
        
         }
        
         @Override
         public boolean supportsPartialMessages() {
         return false;
         }
        
         /**
         * 給所有的用戶發送消息
         */
         public void sendMessagesToUsers(TextMessage message) {
         for (WebSocketSession user : users) {
         try {
         // isOpen()在線就發送
         if (user.isOpen()) {
         user.sendMessage(message);
         }
         } catch (IOException e) {
         e.printStackTrace();
         }
         }
         }
        
         /**
         * 發送消息給指定的用戶
         */
         public void sendMessageToUser(String userId, TextMessage message) {
         for (WebSocketSession user : users) {
         if (user.getAttributes().get("").equals(userId)) {
         try {
         // isOpen()在線就發送
         if (user.isOpen()) {
         user.sendMessage(message);
         }
         } catch (IOException e) {
         e.printStackTrace();
         }
         }
         }
         }
        }
        
        

        4.spring配置

        javabean方式配置(推薦)
        
        package com.ahutshop.websocket;
        
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.Configuration;
        import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
        import org.springframework.web.socket.WebSocketHandler;
        import org.springframework.web.socket.config.annotation.EnableWebSocket;
        import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
        import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
        
        @Configuration
        @EnableWebSocket
        public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer {
         @Override
         public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        
         registry.addHandler(WebSocketPushHandler(), "/webSocketServer.action").addInterceptors(new MyWebSocketInterceptor()).setAllowedOrigins("*");
         registry.addHandler(WebSocketPushHandler(), "/sockjs/webSocketServer.action")
         .addInterceptors(new MyWebSocketInterceptor()).withSockJS();
         }
        
         @Bean
         public WebSocketHandler WebSocketPushHandler() {
         return new WebSocketPushHandler();
         }
        
        }
        
        spring.xml中配置掃描包
        <!-- 掃描包 -->
        <context:component-scan base-package="com.ahutshop.websocket" />
        
        

        注意:

        1. /webSocketServer.action之所以要加上.action的后綴,是因為web.xmlk中配置了攔截的后綴名為.action

        <!-- springmvc模塊 -->
        <servlet>
         <servlet-name>DispatcherServlet</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:springmvc.xml</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
         <!-- 支持異步 -->
         <async-supported>true</async-supported>
        </servlet>
        <servlet-mapping>
         <servlet-name>DispatcherServlet</servlet-name>
         <url-pattern>*.action</url-pattern> 
        </servlet-mapping>
        

        2 .setAllowedOrigins(“*”)中的*代表合法的請求域名,該方法接受一個可變數組作為參數,一定要配置,不然會請求時會出現403

        xml方式配置(省略)

        微信小程序

        1.websocket.wxml

        <!--pages/websocket/websocket.wxml-->
        <view class="page">
         <view class="page__hd">
         </view>
         <view class="page__bd">
        
         <button bindtap="connectWebsocket" type="primary">連接websocket</button>
        
         </view>
        </view>
        
        

        2.websocket.js

        // pages/websocket/websocket.js
        Page({
        
         /**
         * 頁面的初始數據
         */
         data: {
        
         },
         connectWebsocket: function () {
         wx.connectSocket({
         url: 'ws://localhost:8080/AhutShop/webSocketServer.action',
         data: {
         },
         header: {
         'content-type': 'application/json'
         },
         method: "GET"
         })
         wx.onSocketOpen(function (res) {
         console.log('WebSocket連接已打開!')
         })
         wx.onSocketError(function (res) {
         console.log('WebSocket連接打開失敗,請檢查!')
         })
         wx.onSocketMessage(function (res) {
         console.log('收到服務器內容:' + res.data)
         })
         }
        })
        
        

        運行效果

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        微信小程序 websocket 實現SpringMVC+Spring+Mybatis

        微信小程序 websocket 實現SpringMVC+Spring+Mybatis:微信小程序實現websocket步驟: 后臺: 1. 添加maven依賴 2. 創建握手 3. 創建處理器 4. spring配置(xml配置或javabean方式配置任選一種) 微信小程序: 1. 書寫連接 java后臺 1.添加maven依賴 <!-- websocket --> &
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日韩精品成人亚洲专区| 精品国产免费观看一区| 日本高清不卡aⅴ免费网站| 成全高清在线观看免费| 亚洲国产一区二区三区| 亚洲国产一区二区三区青草影视| 国产精品亚洲专区在线观看| 久久亚洲AV成人无码国产电影| 在线观看特色大片免费网站| 亚洲精品国产字幕久久不卡| 亚洲国产欧美一区二区三区 | 在线观看午夜亚洲一区| 亚洲av成人无码久久精品| 亚洲乱亚洲乱妇24p| 无码专区AAAAAA免费视频| 国内大片在线免费看| 久久久久亚洲AV无码专区体验| 亚洲爆乳精品无码一区二区| 国产无遮挡吃胸膜奶免费看视频| 亚洲丁香色婷婷综合欲色啪| 精品熟女少妇av免费久久| 亚洲av无码乱码在线观看野外| 亚洲1234区乱码| 51在线视频免费观看视频| 在线日韩日本国产亚洲| 四虎影视成人永久免费观看视频| 亚洲第一页中文字幕| 桃子视频在线观看高清免费视频| 亚洲国产日韩在线| 99久久久国产精品免费无卡顿| 国产亚洲一区二区精品| 麻豆国产精品免费视频| 中文字幕在线观看亚洲| 久久久久久久久久国产精品免费| 91午夜精品亚洲一区二区三区| 国产精品成人四虎免费视频| 一级人做人爰a全过程免费视频| 日韩在线天堂免费观看| 亚洲中文字幕无码久久| 免费做爰猛烈吃奶摸视频在线观看| 久久久久亚洲AV无码永不|