No exemplo do aplicativo Spring Integration Websocket Integration (Parte 1), implementamos o WebSocket, mas ainda existe uma classe de implementação comercial principal que não foi implementada. Aqui implementamos esta classe principal de negócios. Como o sistema em que participei do WebSocket para enviar mensagens, a implementação é como enviar mensagens.
7. Implementação de listenerimpl
package cn.bridgeli.websocket;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.lagou.common.base.util.date.DateUtil;import com.lagou.platform.news.api.enumeration.PlatNewsCategoryType;import com.lagou.platform.news.web.dao.ext.model.platnewsvo; importação com.lagou.platform.news.web.dao.ext.model.searchcondition; import com.lagou.plate.news.web.quartzPl.imlPition; com.lagou.platform.news.web.service.platNewsservice; importar org.apache.commons.lang.stringutils; importar org.json.simple.jsonArray; import org.json.sple.jsonObject; import.kartz. org.slf4j.logger; importar org.slf4j.loggerfactory; importar org.springframework.beanS.Factory.annotation.autowired; importar org.springframework.teroType.component; importação org.springwork.web.sockeExcen.teroType; java.util.Date;import java.util.List;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/*** @Description : In-site message listener implementation* @Date: 16-3-7*/@Componentpublic class NewsListenerImpl implements NewsListener{private static final Logger logger = LoggerFactory.getLogger (NewsListeneRimpl.class); GSON GSON = new GsonBuilder (). SetDateFormat ("yyyy-mm-dd hh: mm: ss"). Create (); // Thread Pool executService executService = executores. StdschedulerFactory ();@AutowiredPrivate PlatNewSService PlatNews Service; @OverridePublic void pós -resistente (PlatNewsvo PlatNewsvo) {Logger.info ("Uma ouvida uma nova mensagem adicionada. . . "); logger.info (" A nova mensagem é: "+gson.tojson (platnewsvo)); // inicie o thread if (null! PlatnewScategoryType.timing_time.getCategoryId ()) {starttimingTask (platnewsvo); email) {logger.info ("Empurre uma nova mensagem após estabelecer uma conexão com o websocket ..."); startTimingTask (PlatNewsvo PlatNewsvo) {Logger.info ("Inicie a tarefa de mensagem de push cronometrada ..."); data timingtime = platnewsvo.gettimingtime (); if (null == timingtime) {logger.info ("tempo de mensagem é null."); "+Dateutil.date2String (tempo de tempo)); JobDetail jobDetail = jobbuilder.newjob (timingjob.class) .WithIdentity (platnewsvo.getCurrentoOperatorEmail ()+" mensagem timed "+platnewsvo.getIdids ()," local ". jobDetail.getjobdatamap (). put ("PlatNewSService", PlatNews Service); JobDetail.getjobdatamap (). put ("UserEmail", PlatNewsvo.getCurrentoPeratorAil Trigger "+platnewsvo.getId ()," Mensagem no local "). startat (timingtime) .WithSchedule (simplechedulebuilder.simpleSchedule (). {Scheduler scheding = sf.getscheduler (); sched.schedulejob (jobdetail, gatilho); if (! Sched.isshutdown ()) {sched.start ();}} catch (schedulerxception e) {logger.info (e.ToString ();); . . ");}/*** @Description: Empurre thread após estabelecer um link websocket*/classe AfterConnectionEstabledTask implementa Runnable {String email; public AfterConnectionEstabledTask (string email) {this.email = email;} @substituição Mensagens do usuário Run () {Logger.info (" Start; "+email+" .... "); if (! stringUtils.isblank (email)) {pesquisa de pesquisa searchcondition = new SearchCondition (); searchcondition.setOperatorEmail (email); jsonArray jsonArray = new jsonArray (); para (PlatNewScategoryTyType Type: PlatNewScategoryType.Values ()) {SearchCondition.SetTypeId (type.getCategoryId ()); int contount = PlatNewSService.CountplatNewsByExample (SearchCondition); JsonObject Object = Novo JsonObject (); object.put ("name", type.name ()); object.put ("description", type.getDescription ()); object.put ("count", count); jsonArray.add (object);} se (null! WssessionLocalcache.get (email); textMessage Remessage = new textMessage (gson.tojson (jsonArray)); tente {if (null! = Usersocketvo) {// pressionar usersocketvo.getwebsocketSession (). SendMessage (remessa) // atualizar o tempo userSocketvo.setLastSendTime (dateUtil.getNowdate ()); logger.info ("Complete a nova mensagem Push para o usuário:"+usersocketvo.getUsereMail ()+". . . ");}} Catch (ioexception e) {Logger.error (e.toString ()); Logger.info (" Mensagem no local Falha ... "+E.ToString ());}}} logger.info (" Push final para "+e-mail" .... ");}}}Esta classe é a implementação do negócio principal do WebSocket. Sua certeza específica está relacionada ao negócio. Devido a negócios diferentes, a implementação é definitivamente diferente. Como o sistema em que participei está enviando mensagens, a frase mais central é:
userSocketvo.getwebsocketSession (). SendMessage (Remessage);
Envie nossa mensagem através do método SendMessage da WebSocketSession. Além disso, essa é principalmente a implementação do back -end. Quanto à implementação do front -end, porque sou um programador de back -end, presto mais atenção ao back -end, por isso não apresentarei o front -end. Você pode verificar as informações online sozinho. Finalmente, quando procurei alguns materiais de estudo antes, descobri que o estilo de escrita do meu colega era quase o mesmo que um artigo. Eu acho que o colega deveria ter referenciado este artigo, por isso está listado abaixo e contado como materiais de referência.