In der Frühlingsintegration WebSocket -Integrationsanwendungsbeispiel (Teil 1) haben wir WebSocket implementiert, aber es gibt immer noch eine Kerngeschäfts -Implementierungsklasse, die nicht implementiert wurde. Hier implementieren wir diese Business Core -Klasse. Da das System, an dem ich teilgenommen habe, WebSocket zum Senden von Nachrichten verwendet, ist die Implementierung, wie Sie Nachrichten senden.
7. Implementierung von NewsuristenerImpl
Paket cn.bridgeli.websocket; import com.google.gson.gson; import com.google.gson.gsonbuilder; import com.lagou.common.base com.lagou.platform.news.web.dao.ext.model.platnewsvo; import com.lagou.platform.news.web.dao.ext.model.searchcondition; import Com.lagou.Platform.News.web.quartz.impl.timingjob; com.lagou.platform.news.web.service.platnewsservice; import org.apache.commons.lang.Stringutils; import org.json.simple.jsonArray; org. java.util.date; import Java.util.list; import java.util.concurrent.executorservice; import Java.util.concurrent Loggerfactory.getLogger (NewsListenerImpl.class); gson gson = new GsonBuilder (). STDSchedulerFactory ();@AutoWiredPrivate PlatnewsService PlatnewsService; @Overridepublic void Afterpersist (Platnewsvo Platnewsvo) {logger.info ("Eine neue Nachricht hinzugefügt. . . "); logger.info (" Neue Nachricht ist: "+gson.tojson (Platnewsvo)); // den Thread if (null! PlatnewScategoryType.timing_time.getCategoryId ()) {startTimingtask (platnewsvo); E -Mail) {logger.info ("eine neue Nachricht nach dem Erstellen einer WebSocket -Verbindung ..."); StartTimingtask (Platnewsvo Platnewsvo) {logger.info ("Starten Sie die zeitgesteuerte Push -Nachrichtenaufgabe ..."); Datum TimingTime = Platnewsvo.GetTimingTime (); if (null == TimingTime) {logger.info ("Timed Message Time is null timd."); "+DateUtil.Date2String (TimingTime)); JobDetail JobDetail = Jobbuilder.Newjob (Timingjob.ClASS). jobdetail.getjobdatamap (). trigger"+platNewsVo.getId(), "In-site message").startAt(timingTime).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(0) //Time interval.withRepeatCount(0) //RepeatCount(0) //Number of repetitions).build();//Start the timing task try {Scheduler plan = sf.getScheduler (); ender . . ");}/*** @Description: Thread nach dem Erstellen eines WebSocket -Links*/class AfterConnectionDableDlydTask implements Runnable {String -E -Mail; public AfterConnectionEtabledStask (String -E -Mail) {this.email = E -Mail;} @oversidepublic void run () {logger.info (" Start Nachrichten starten Sie Nachrichten, um Nachrichten zu überschreiten. "+E -Mail+" .... "); if (! Stringutils.isblank (E -Mail)) {SearchCondition SearchCondition = new SearchCondition (); SearchCondition.Setoperatoremail (E -Mail); PlatnewScategoryType.values ()) {SearchCondition.SettypeId (type.getCategoryId ()); int count = platnewsService.CountPlatnewsByExample (SearchCondition); jsonObject Object = new JsonObject (); Object.put ("name", type.name ()); Object.put ("Beschreibung", type.getDescription ()); Object.put ("count", count); jsonArray.add (Objekt);} if (null! WSSessionLocalCache.get (E -Mail); TextMessage Remessage = new textMessage (gson.tojson (jsonArray)); try {if (null! userocketvo.setLastSendTime (DateUtil.getNowDate ()); logger.info ("Vollständige neue Nachricht an den Benutzer:"+userocketvo.getUeremail ()+". . . ");}} catch (ioException e) {logger.Error (e.toString ()); logger.info (" In-Site-Nachricht fehlgeschlagen ... "+e.toString ());}}} logger.info (" End-Push-Nachricht zu "+E-Mail+" .... ");Diese Klasse ist die Implementierung des Kerngeschäfts von WebSocket. Seine spezifische Sicherheit hängt mit dem Geschäft zusammen. Aufgrund anderer Geschäftstätigkeit ist die Implementierung definitiv anders. Da das System, an dem ich teilgenommen habe, Nachrichten sendet, ist der Kernsatz:
userSocketvo.getWebSocketSession (). SendMessage (Remessage);
Senden Sie unsere Nachricht über die SendMessage -Methode von WebSocketSession. Darüber hinaus ist dies hauptsächlich die Implementierung des Backends. Was die Implementierung des Frontend betrifft, da ich ein Backend -Programmierer bin, achte ich mehr auf das Backend, sodass ich die Frontend nicht vorstellen werde. Sie können die Informationen selbst online überprüfen. Als ich zuvor schon nach einige Lernmaterialien suchte, stellte ich fest, dass der Schreibstil meines Kollegen fast dasselbe war wie ein Artikel. Ich denke, der Kollegen hätte diesen Artikel verwiesen müssen, daher ist er unten aufgeführt und als Referenzmaterial gezählt.