基于spring4 websocket的简易聊天室

一:创建maven webapp项目

编辑pom.xml文件

<project xmlns="" xmlns:xsi=""xsi:schemaLocation=" http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lala</groupId><artifactId>tweet</artifactId><version>1.0.0</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><jsp.version>2.2</jsp.version><jstl.version>1.2</jstl.version><servlet.version>3.0.1</servlet.version><spring-framework.version>4.1.7.RELEASE</spring-framework.version><junit.version>4.12</junit.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring-framework.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>${jstl.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>${servlet.version}</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>${jsp.version}</version><scope>provided</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-websocket</artifactId><version>${spring-framework.version}</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.3.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>1.8</source><target>1.8</target><verbose>true</verbose></configuration></plugin><plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.2.11.v20150529</version><configuration><stopKey>foo</stopKey><stopPort>9999</stopPort><httpConnector><port>9090</port></httpConnector><webApp><contextPath>/</contextPath></webApp></configuration></plugin></plugins></build></project>

二:编写server endpoint

package com.lala.action;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import org.springframework.web.socket.TextMessage;import org.springframework.web.socket.WebSocketSession;import org.springframework.web.socket.handler.TextWebSocketHandler;import com.google.gson.Gson;public class TweetWebSocket extends TextWebSocketHandler{private Map<String, WebSocketSession> clients = new ConcurrentHashMap<>();public void handleTextMessage(WebSocketSession session, TextMessage message){if(!clients.containsKey(session.getId())){clients.put(session.getId(), session);}String data = message.getPayload();Gson g = new Gson();Map<String, Object> datas = g.fromJson(data, Map.class);String type = datas.get("type").toString();if("1".equals(type)){datas.put("pcount", clients.keySet().size() + "");}else if("3".equals(type)){clients.remove(session.getId());datas.put("pcount", clients.keySet().size() + "");}TextMessage tm = new TextMessage(g.toJson(datas));sendToAll(tm);}private void sendToAll(TextMessage tm){try{for(WebSocketSession session : clients.values()){if(session.isOpen()){session.sendMessage(tm);}else{clients.remove(session.getId());}}}catch(Exception e){e.printStackTrace();}}}三:mvn-servlet配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns=""xmlns:xsi=""xmlns:mvc=""xmlns:context=""xmlns:websocket=""xsi:schemaLocation=""><mvc:annotation-driven /><context:component-scan base-package="com.lala"></context:component-scan><bean id="tweet" class="com.lala.action.TweetWebSocket"/><websocket:handlers><websocket:mapping path="/tweets/list" handler="tweet"/></websocket:handlers><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/view/"/><property name="suffix" value=".jsp"/></bean></beans>

index.jsp页面

命运掌握在自己手中

基于spring4 websocket的简易聊天室

相关文章:

你感兴趣的文章:

标签云: