spring建立websocket例子

来源:互联网 发布:sam软件csp 编辑:程序博客网 时间:2024/05/22 03:36

1、依赖包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${org.springframework-version}</version>
</dependency>
2、配置文件
<context:component-scan base-package="com.jrj.springwebsocket" />
<websocket:handlers>
<websocket:mapping handler="webSocketHandler" path="/websocket"/>
<websocket:sockjs />
</websocket:handlers>
<bean id="webSocketHandler" class="com.jrj.springwebsocket.WebSocketHandler" />
3、前端js建立连接
<script type="text/javascript">
var websocket = null;
/* if('WebSocket' in window) {
websocket = new WebSocket("ws://localhost:8080/springwebsocket/websocket");
} else {
alert('当前浏览器不支持websocket!');
websocket = new SockJS("http://localhost:8080/springwebsocket/websocket");
} */
websocket = new SockJS("http://localhost:8080/springwebsocket/websocket");

websocket.onerror = function() {
setMessage("websocket连接出错");
}

websocket.onopen= function() {
 setMessage("websocket连接成功!");}websocket.onmessage= function(event) {setMessage(event.data);}websocket.onclose= function() {close();}function setMessage(text) {$("#message").append(text).append("<br>");}function close() {websocket.close();}function send() {var msg = $("#text").val();websocket.send(msg);}</script>
4、后端连接类
package com.jrj.springwebsocket;


import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.AbstractWebSocketHandler;


public class WebSocketHandler extends AbstractWebSocketHandler {


private WebSocketSession session;
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
// TODO Auto-generated method stub
super.afterConnectionClosed(session, status);
System.out.println("a new connection incoming...");
}


@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
// TODO Auto-generated method stub
super.afterConnectionEstablished(session);
System.out.println("a new connection exiting...");
}


@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
System.out.println("server received:" + payload);
this.session=session;
session.sendMessage(new TextMessage(payload));
}
protected void handleTextMessage(String message) throws Exception {
System.out.println("server received:" + message);
this.session.sendMessage(new TextMessage(message));
}


}


5、后端推送类
package com.jrj.springwebsocket;


import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class PushController {
@Autowired
private WebSocketHandler webSocketHandler;
@RequestMapping(value = "/push", method = RequestMethod.GET)
public void home(Locale locale, Model model) throws Exception {
while(true) {
Date date = new Date();
webSocketHandler.handleTextMessage("push message:" + date.getTime());
Thread.sleep(1000);
}
}
}
6、结果演示


7、git代码地址
https://github.com/xf87/springwebsocket 

1 0
原创粉丝点击