首先创建接收消息器
public class MarcoHandler extends AbstractWebSocketHandler {
private Logger log = LoggerFactory.getLogger(MarcoHandler.class);
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
log.info(message.getPayload());
System.out.println(message.getPayload());
Thread.sleep(2000);
session.sendMessage(new TextMessage("Polo!"));
}
}
websock配置文件
.withSockJS() 启用SockJS
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(marcoHandler(), "/marco").withSockJS();
}
@Bean
public MarcoHandler marcoHandler(){
return new MarcoHandler();
}
}
客户端 js
因为使用的SockJS 所以需要引用SockJS.js
<script src="http://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.min.js"></script>
<script type="text/javascript">
//原生的WebSocket调用方式
//var url = 'ws://'+window.location.host+'/spittr/marco';
//var sock = new WebSocket(url);
var url = 'marco';
var sock = new SockJS(url);
sock.onopen = function(){
console.log('Opening');
sayMaro();
}
sock.onmessage= function(e){
console.log('Received message:',e.data);
setTimeout(function(){
sayMaro();
},2000);
}
sock.onclose = function(){
console.log('Closing');
}
function sayMaro(){
console.log('ending Marco!');
sock.send("坏蛋!");
}
</script>
这就OK了,太粗浅了!!