One: Create a MAVEN WebApp project
Edit Pom.xml File
<project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance" xsi: schemalocation= "http://maven.apache.org/POM/4.0.0 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>
Two: Writing server endpointPackage 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<> ();p ublic 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 ());d atas.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 ();}}}
Three: Mvn-servlet configuration<?xml version= "1.0" encoding= "UTF-8"? ><beans xmlns= "Http://www.springframework.org/schema/beans" Xmlns:xs I= "Http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc= "Http://www.springframework.org/schema/mvc" xmlns: context= "Http://www.springframework.org/schema/context" xmlns:websocket= "http://www.springframework.org/schema/ WebSocket "xsi:schemalocation=" Http://www.springframework.org/schema/mvc http://www.springframework.org/schema/ Mvc/spring-mvc.xsd Http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/ Spring-beans.xsd Http://www.springframework.org/schema/websocket Http://www.springframework.org/schema/websocket /spring-websocket.xsd Http://www.springframework.org/schema/context http://www.springframework.org/schema/ Context/spring-context.xsd "> <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 page
<%@ page language= "java" contenttype= "text/html; Charset=utf-8 "pageencoding=" UTF-8 "%><! DOCTYPE html>
Finally, the implementation
MVN Clean Jetty:run
Start the service
Enter in the browser above
Http://127.0.0.1:9090/index.jsp?username= User Name
Open a few more browser windows to group chat
For:
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
A simple chat room based on Spring4 websocket