• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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无码精品| 99精品国产自在现线观看| 欧美人与动牲交a欧美精品| 精品久久香蕉国产线看观看亚洲| 中文精品99久久国产| 在线精品视频播放| 亚洲高清国产拍精品26U| 国产精品国产AV片国产| 国产亚洲精品xxx| 国产精品无码无需播放器| 亚洲AV无码乱码精品国产| 国产精品麻豆欧美日韩ww| 欧美一卡2卡3卡四卡海外精品| 国产精品9999久久久久| 亚洲国产精品嫩草影院在线观看| 99视频在线观看精品| 国产欧美在线观看精品一区二区| 97精品国产福利一区二区三区| 婷婷精品国产亚洲AV麻豆不片| 男女男精品网站免费观看| 2021年精品国产福利在线| 亚洲国产精品成人网址天堂| 国产精品免费网站| 国产精品区免费视频| 最新国产精品拍自在线观看| 免费观看四虎精品成人| 国产成人亚洲精品影院 | 99精品国产在热久久| 国产精品原创巨作av女教师| 中文字幕精品亚洲无线码二区 | 久久精品综合一区二区三区| 国产一区精品| 久久精品国产一区二区电影| 久久夜色撩人精品国产| 青青热久久国产久精品 | 久久久久人妻精品一区| 亚洲AV无码成人精品区在线观看| 中国国产精品| 日韩精品无码一区二区三区免费| 日本内射精品一区二区视频|