- websocket開發(fā)基于web 3.0以上, 要求tomcat 8 , java 7 版本以上, 在項目中修改web版本
- 導入jar包
<!-- https://mvnrepository.com/artifact/org.springframework/spring-websocket -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-messaging -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>
- 配置spring配置文件
<!-- 掃描組件 -->
<context:component-scan base-package="chatroom.web" />
<!-- 配置注解版本的 spring-mvc -->
<mvc:annotation-driven />
<!-- 配置websocket握手 -->
<websocket:handlers>
<websocket:mapping handler="websocket" path="/websocket"/>
<websocket:handshake-interceptors>
<bean class="chatroom.web.websocket.HandshakeInterceptor"/>
</websocket:handshake-interceptors>
</websocket:handlers>
- 服務器代碼
package chatroom.web.websocket;
import java.util.Map;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor;
/**
* 處理socket握手
* @author zhang
*
*/
public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler,
Map<String, Object> attributes) throws Exception {
System.out.println("before handshake");
return super.beforeHandshake(request, response, handler, attributes);
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
Exception ex) {
System.out.println("after handshake");
super.afterHandshake(request, response, wsHandler, ex);
}
}
package chatroom.web.websocket;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
/**
* 消息處理控制器
* @author zhang
*
*/
@Controller("websocket")
@RequestMapping("websocket")
public class WebSocketHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
super.handleTextMessage(session, message);
TextMessage returnMessage = new TextMessage(message.getPayload() + " recieved at server");
session.sendMessage(returnMessage);
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者