定时任务的管理:
public class QuartzManager { /** * 开启一个quartz * @param scheduler * @param conferenceId */ public static void addJob(Scheduler scheduler,Long conferenceId){ try { JobDetail jobDetail = JobBuilder.newJob(ConferenceJob.class) .storeDurably(true).usingJobData("conferenceId",conferenceId) .withIdentity(JobKey.jobKey(conferenceId.toString())) .build(); Trigger trigger = TriggerBuilder.newTrigger() .forJob(jobDetail).withSchedule(SimpleScheduleBuilder.repeatSecondlyForever().withIntervalInMilliseconds(500)) .withIdentity(TriggerKey.triggerKey(conferenceId.toString())) .startNow() .build(); scheduler.scheduleJob(jobDetail, trigger); } catch (SchedulerException e) { e.printStackTrace(); } } /** * 关闭一个 quartz * @param scheduler * @param conferenceId */ public static void removeJob(Scheduler scheduler,Long conferenceId){ try { scheduler.pauseTrigger(TriggerKey.triggerKey(conferenceId.toString()));// 停止触发器 scheduler.unscheduleJob(TriggerKey.triggerKey(conferenceId.toString()));// 移除触发器 scheduler.deleteJob(JobKey.jobKey(conferenceId.toString()));// 删除任务 } catch (SchedulerException e) { e.printStackTrace(); } } /** * 获取job */ public static JobDetail findJod(Scheduler scheduler,String jobKey){ JobDetail jobDetail = null; try { jobDetail = scheduler.getJobDetail(JobKey.jobKey(jobKey)); } catch (SchedulerException e) { e.printStackTrace(); } return jobDetail; } }
消息发送:
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/conference"); config.setApplicationDestinationPrefixes("/app"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/cochat-conference").withSockJS().setClientLibraryUrl("/socket/sockjs.min.js"); } }
public class SocketService {private SimpMessagingTemplate messagingTemplate;public void sendMessage(Long conferenceId){ String conferenceMessage = "hello"; messagingTemplate.convertAndSend("/conference/greetings/11"+,conferenceMessage); }}
sockJs:function connect() { var sockJS = new SockJS(appPath+'/cochat-conference'); // var socket = new WebSocket("ws://localhost:8080/cochat-conference"); stompClient = Stomp.over(sockJS); stompClient.connect({}, function (frame) { stompClient.subscribe('/conference/greetings/'+conferenceId, function (message) { //调用 消息展示 console.log("message"+message); }); },function(error){ console.error(error); }); sockJS.onclose = function() { console.log('+++++++++++++++++++++++++++++++================close'); };