في مثال تطبيق WebSocke تكامل WebSocket (الجزء 1) ، قمنا بتطبيق WebSocket ، ولكن لا يزال هناك فئة تنفيذ الأعمال الأساسية لم يتم تنفيذها. هنا ننفذ هذه الفئة الأساسية التجارية. نظرًا لأن النظام الذي شاركت فيه يستخدم WebSocket لإرسال الرسائل ، فإن التنفيذ هو كيفية إرسال الرسائل.
7. تنفيذ newslistenerimpl
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.platnewscategorype ؛ com.lagou.platform.news.web.dao.ext.model.platnewsvo ؛ استيراد com.lagou.platform.news.web.dao.ext.model.searchcondition com.lagou.platform.news.web.service.platnewsservice ؛ import org.apache.commons.lang.stringutils ؛ import org.json.simple.jsonarray ؛ import org.json.simple.jsonobject ؛ org.slf4j.logger ؛ استيراد org.slf4j.loggerfactory ؛ استيراد org.springframework.beans.factory.AntOwised java.util.date ؛ استيراد java.util.list ؛ استيراد java.util.concurrent.executorservice ؛ استيراد java.util.concurrent.executors ؛/*** @description: in site stist stister stist static logger*static logger loggr. loggerfactory.getLogger (newslistenerimpl.class) ؛ gson gson = new gsonbuilder (). setDateFormat ( stdschedulerfactory () ؛@AutoWiredPrivate Platnewsservice PlatnewsService ؛ Overridepublic Void بعد persist (platnewsvo platnewsvo) {logger.info ("" تم الاستماع إلى رسالة جديدة. . . ") ؛ logger.info (" رسالة جديدة هي: "+gson.tojson (platnewsvo)) ؛ // ابدأ الموضوع إذا (null! = platnewsvo &&! platnewscategoryype.timing_time.getCategoryId ()) {startTimingTask (platnewsvo) ؛ {logger.info ("ادفع رسالة جديدة بعد إنشاء اتصال WebSocket ...") ؛ StartIttimingTask (platnewsvo platnewsvo) {logger.info ("ابدأ مهمة رسالة الدفع الموقوت ...") ؛ توقيت التاريخ = platnewsvo.getTimingTime () ؛ if (null == timingtime) "+dateutil.date2String (timingTime)) ؛ JobDetail JobDetail = Jobbuilder.newjob (timingjob.class). withidentity (platnewsvo.getCurrentOperatoremail ()+" message timed "+platnewsvo.getid () ، JobDetail.getJobDatamap (). put ("platnewsservice" ، platnewsservice) ؛ JobDetail.getJobDatamap (). put ("useremail" ، platnewsvo.getCurrentOperatoremail ()) الزناد "+platnewsvo.getid () ،" رسالة في الموقع "). startat (توقيت). withschedule (simplesCheduleBuilder.SimplesChedule (). {Scheduler Sched = sf.getScheduler () ؛ Sched.ScheDuleJob (JobDetail ، Trigger) ؛ if (! sched.isshutdown ()) {Sched.Start () ؛}} catch (Schedulerexception e) {logger.info ( . . ") ؛}/*** description: push thread بعد إنشاء ارتباط websocket*/class بعد connectableStableSatcase reghable {string email ؛ public connectablishedtask (string email) {this.email = elem ؛ "+البريد الإلكتروني+" .... ") ؛ if (! stringUtils.isBlank (البريد الإلكتروني)) {searchCondition searchCondition = new searchCondition () ؛ searchCondition.SetOperatorEmail (email) ؛ platnewscategoryype.values ()) {searchCondition.settypeid (type.getCategoryId ()) ؛ int count = platnewsservice.countplatnewsbyexample (searchCondition) ؛ jsonobject object = جديد jsonobject () ؛ object.put ("name" ، type.name ()) ؛ object.put ("الوصف" ، type.getDescription ()) ؛ object.put ("count" ، count) ؛ wssessionlocalcache.get (البريد الإلكتروني) ؛ textMessage Remessage = new textMessage (gson.tojson (jsonarray)) userSOCKENTVO.SETLASTSENDTIME (dateUtil.getNowDate ()) ؛ logger.info ("أكمل رسالة جديدة إلى المستخدم:"+userSocketVo.getuseremail ()+". . . ") ؛}} catch (ioException e) {logger.error (هذا الفصل هو تنفيذ الأعمال الأساسية لـ WebSocket. يرتبط اليقين المحدد بالعمل. بسبب الأعمال المختلفة ، فإن التنفيذ مختلف بالتأكيد. لأن النظام الذي شاركت فيه هو إرسال الرسائل ، فإن الجملة الأكثر جوهرية هي:
userSocketVo.getWebsOcketSession (). sendMessage (Remessage) ؛
أرسل رسالتنا من خلال طريقة sendMessage لـ WebSocketSession. بالإضافة إلى ذلك ، هذا هو أساسا تنفيذ الخلفية. بالنسبة لتنفيذ الواجهة الأمامية ، لأنني مبرمج خلفي ، فإنني أولي اهتمامًا أكبر للواجهة الخلفية ، لذلك لن أقدم الواجهة الأمامية. يمكنك التحقق من المعلومات عبر الإنترنت بنفسك. أخيرًا ، عندما بحثت عن بعض مواد الدراسة من قبل ، وجدت أن أسلوب كتابة زميلي كان هو نفس مقال تقريبًا. أعتقد أن الزميل كان يجب أن يشير إلى هذه المقالة ، لذلك يتم سرده أدناه ويتم حسابه كمواد مرجعية.