1.加入js依赖,浏览器不支持websocket时,使用sockJS
<span style="font-size:18px;"><span style="font-size:18px;"><script type="text/javascript" src="js/sockjs-0.3.4.min.js"></script>
<script type="text/javascript" src="js/stomp.min.js"></script></span></span>
2.JS实现
<span style="font-size:18px;"><span style="font-size:18px;"> initWebSocketConnection: function () {
//Create stomp client over sockJS protocol
var sock = new SockJS('/webSocketVisitor');
stomp = Stomp.over(sock);
// Connect to server via websocket
stomp.connect({}, _this.connectCallback, _this.errorCallback);
},
disWebSocketWebSocketConnection: function () {
stomp && stomp.disconnect(function () {
});
},
//Callback function to be called when stomp client is connected to server
connectCallback: function () {
stomp.subscribe('/topic/uploadVisitor', _this.parseEvent);
},
//Callback function to be called when stomp client could not connect to server
errorCallback: function () {
alert(jQuery.i18n.prop('pb.label.site.fail.to.link.server.tip'));
},
parseEvent:function (frame) {
var entry = JSON.parse(frame.body);
alert(entry.visitorName)
},</span></span>
3.注册
<span style="font-size:18px;"><span style="font-size:18px;">@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer
{
@Override
public void registerStompEndpoints(StompEndpointRegistry registry)
{
registry.addEndpoint("/webSocketVisitor").addInterceptors(new HttpSessionHandshakeInterceptor()).withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry config)
{
config.enableSimpleBroker("/topic", "/queue");
config.setApplicationDestinationPrefixes("/wsapp");
}
}</span></span>
4.消息发送模板
<span style="font-size:18px;"><span style="font-size:18px;">@Component
public class RegisterVisitorEvent {
@Autowired
private SimpMessagingTemplate message;
public void broadcastVisitor(RegisterVisitor visitor){
message.convertAndSend("/topic/uploadVisitor",visitor);
}
}</span></span>
5.调用
<span style="font-size:18px;"><span style="font-size:18px;"> @Autowired
private RegisterVisitorEvent registerVisitorEvent;
@RequestMapping(value = "/add")
@ResponseBody
public JsonResponse add(RegisterVisitorCustom visitor, @RequestParam(value = "suiteList[]", required = false) List<Object> suiteList, HttpServletRequest request){
JsonResponse jr = new JsonResponse();
List<Suite> suites = new ArrayList<>();
if (null != suiteList){
for (Object object : suiteList){
Suite suite = JSONObject.parseObject(object.toString(),Suite.class);//将建json对象转换为JavaBean对象
suites.add(suite);
}
}
Admin admin = CurrentAdminUtil.getCurrentAdmin(request);
visitor.setAdminId(admin.getId());
visitor.setAdminName(admin.getName());
visitor.setSuites(suites);
visitor.setCreateTime(new Date());
visitorService.addVisitorAndSuite(visitor);
registerVisitorEvent.broadcastVisitor(visitor);
jr.setSuc(JsonResponse.SUCCESS);
return jr;
}</span></span>