springboot+websocket實現後臺與客戶端"全雙工"通訊html
項目結構圖:前端
2. 開發工具是IDEA, 建立springboot項目,在pox.xml中加入(下面是個人pom.xml的dependencies裏的所有依賴,由於,這個是最簡單的入門例子,因此只有主要的websocket和web依賴)java
<dependencies>web
<dependency>spring
<groupId>org.springframework.boot</groupId>apache
<artifactId>spring-boot-starter-web</artifactId>後端
</dependency>springboot
<!--websocket鏈接須要使用到的包-->websocket
<dependency>session
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3.建立一個頁面index.html,前端跳轉後端的一些必要代碼,貼部分代碼
WebSocket創建鏈接WebSocket關閉鏈接
JS代碼以下:
(document).(() { websocket = ().(() { host = document..(window) { ()websocket = WebSocket(+ host ++ )} { () } websocket.= () { ()()}websocket.= () { ()()}websocket.= (event) { ()(+ event.)(event.)}websocket.= () { ()} }) ().(() { (websocket != ) { websocket.()} () }) })(innerHTML) { ().(innerHTML)}
JAVA後臺代碼:
com.eeka.wmslight.controller.configcom.eeka.wmslight.model.opm.Usercom.google.common.collect.Mapsorg.apache.shiro.SecurityUtilsorg.springframework.stereotype.javax.websocket.*javax.websocket.server.javax.websocket.server.java.io.IOExceptionjava.util.Mapjava.util.concurrent.CopyOnWriteArraySet() MyWebSocket { = CopyOnWriteArraySet<MyWebSocket> = CopyOnWriteArraySet<MyWebSocket>()Map<IntegerMyWebSocket> = Maps.()Session Integer (() Integer userIdSession session){ .= userId.= session.put(userId).add()()System..println(+ ())} (){ .remove()()System..println(+ ())} (String messageSession session) { System..println(+ message)(MyWebSocket item: ){ } } (Session sessionThrowable error){ System..println()error.printStackTrace()} (String messageInteger userId) IOException{ MyWebSocket socket = .get(userId)(socket != ) { socket..getBasicRemote().sendText(message)} } () { } () { MyWebSocket.++} () { MyWebSocket.--} }
SpringBoot須要注入WebSocketConfig
WebSocketConfig { ServerEndpointExporter (){ ServerEndpointExporter()} }
4.而後在業務類裏面集成MyWebSocket