<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
        主站蜘蛛池模板: 亚洲AV日韩精品久久久久久久| 亚洲人av高清无码| 日本免费人成在线网站| 亚洲日本香蕉视频观看视频| 四虎影院免费在线播放| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 亚洲综合国产精品| 日韩高清免费观看| 最好免费观看高清在线| 亚洲中文字幕无码mv| 中文亚洲AV片在线观看不卡| 国产精品永久免费10000| 五月天国产成人AV免费观看| 亚洲小说区图片区| 国产成人精品亚洲精品| 国产成人无码免费看视频软件| 成在线人直播免费视频| 亚洲国产精品专区| 中文字幕第13亚洲另类| 成年在线观看免费人视频草莓| 免费无码H肉动漫在线观看麻豆| 亚洲精品无码mⅴ在线观看| 亚洲成色www久久网站夜月| 国产福利免费观看| 91香蕉成人免费网站| a级在线免费观看| AV激情亚洲男人的天堂国语| 亚洲国产超清无码专区| 亚洲精品高清无码视频| 国产午夜影视大全免费观看| 国产91免费视频| 香港a毛片免费观看| 人体大胆做受免费视频| 亚洲国产aⅴ成人精品无吗| 久久亚洲精品无码aⅴ大香| 国产亚洲精久久久久久无码77777 国产亚洲精品成人AA片新蒲金 | 国产特级淫片免费看| 青娱分类视频精品免费2| 无码中文字幕av免费放dvd| 国产乱子伦精品免费视频| 国产天堂亚洲精品|