위 챗 애플 릿 웹 소켓 SpringMVC+Spring+Mybatis 구현
배경:
1. maven
2.
3.
4. spring (xml javabean )
위 챗 애플 릿:
1.
자바 배경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 접 두 사 를 붙 이 는 이 유 는 웹.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)
})
}
})
실행 효과이상 은 바로 위 챗 애플 릿 백 스테이지 의 구축 입 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주시 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 십시오.본 사이트 에 위 챗 애플 릿 에 관 한 글 이 아직 많 습 니 다.많이 찾 아 보 세 요.읽 어 주 셔 서 감사합니다. 여러분 께 도움 이 되 었 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
OpenSSL 생 성 ssl 인증서텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.