/* čĊ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . čĊ Ġ* čĊ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . čĊ Ġ* čĊ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . čĊ Ġ* čĊ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . čĊ Ġ* čĊ Ġ* čĊ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : čĊ Ġ* Ġ------------------------------------------------ --- čĊ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated čĊ Ġ* Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe čĊ Ġ* Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto čĊ Ġ* Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : čĊ Ġ* čĊ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof čĊ Ġ* Ġthe ĠSoftware . čĊ Ġ* čĊ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT čĊ Ġ* ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN čĊ Ġ* ĠNO ĠEVENT ĠSHALL ĠTHE ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , čĊ Ġ* ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE čĊ Ġ* ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE ĠSOFTWARE . čĊ Ġ*/ čĊč Ċ package Ġcom . tencent . devops . websocket . configuration čĊč Ċ import Ġcom . tencent . devops . common . redis . Redis Operation č Ċ import Ġcom . tencent . devops . websocket . handler . BK Handshake Interceptor č Ċ import Ġcom . tencent . devops . websocket . handler . Session WebSocket Handler Decorator Factory č Ċ import Ġcom . tencent . devops . websocket . serv cie . Websocket Service č Ċ import Ġorg . slf 4 j . LoggerFactory č Ċ import Ġorg . springframework . beans . factory . annotation . Autowired č Ċ import Ġorg . springframework . beans . factory . annotation . Value č Ċ import Ġorg . springframework . context . annotation . Bean č Ċ import Ġorg . springframework . context . annotation . Configuration č Ċ import Ġorg . springframework . messaging . simp . config . Channel Registration č Ċ import Ġorg . springframework . messaging . simp . config . Message Broker Registry č Ċ import Ġorg . springframework . web . socket . config . annotation . Abstract WebSocket Message Broker Configurer č Ċ import Ġorg . springframework . web . socket . config . annotation . Enable WebSocket Message Broker č Ċ import Ġorg . springframework . web . socket . config . annotation . Sto mp Endpoint Registry č Ċ import Ġorg . springframework . web . socket . config . annotation . WebSocket Transport Registration čĊč Ċ @ Suppress (" ALL ") č Ċ @ Configuration č Ċ @ Enable WebSocket Message Broker č Ċ class ĠWebSocket Config Ġ@ Autowired Ġconstructor ( čĊĠĠĠ Ġprivate Ġval Ġbk Handshake : ĠB K Handshake Interceptor , čĊĠĠĠ Ġprivate Ġval Ġwebsocket Service : ĠWeb socket Service , čĊĠĠĠ Ġprivate Ġval Ġredis Operation : ĠRedis Operation č Ċ ) Ġ: ĠAbstract WebSocket Message Broker Configurer () Ġ{ čĊčĊĠĠĠ Ġ@ Value ("\ ${ thread . min : 8 }") čĊĠĠĠ Ġprivate Ġval Ġmin : ĠInt Ġ= Ġ 8 čĊčĊĠĠĠ Ġ@ Value ("\ ${ ws . cache Limit : 3 6 0 0 }") čĊĠĠĠ Ġprivate Ġval Ġcache Limit : ĠInt Ġ= Ġ 3 6 0 0 čĊčĊĠĠĠ Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( WebSocket Config :: class . java ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġconfigure Message Broker ( config : ĠMessage Broker Registry ) Ġ{ čĊĠĠĠĠĠĠĠ Ġconfig . set Cache Limit ( cache Limit ) čĊĠĠĠĠĠĠĠ Ġconfig . enable Simple Broker ("/ topic ") čĊĠĠĠĠĠĠĠ Ġconfig . set Application Destination Prefixes ("/ app ") čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġregister Sto mp Endpoints ( registry : ĠSto mp Endpoint Registry ) Ġ{ čĊĠĠĠĠĠĠĠ Ġregistry . add Endpoint ("/ ws / user "). add Intercept ors ( bk Handshake ). set Allowed Origin Patterns ("* "). with Sock JS () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Override čĊĠĠĠ Ġoverride Ġfun Ġconfigure Client Inbound Channel ( registration : ĠChannel Registration ) Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġdefault Core PoolSize Ġ= Ġmin čĊĠĠĠĠĠĠĠ Ġif Ġ( default Core PoolSize Ġ< ĠRuntime . get Runtime (). available Processors () Ġ* Ġ 2 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Core PoolSize Ġ= ĠRuntime . get Runtime (). available Processors () Ġ* Ġ 2 čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġregistration . task Executor (). core PoolSize ( default Core PoolSize ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. max PoolSize ( default Core PoolSize Ġ* Ġ 2 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. keep Alive Seconds ( 6 0 ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Override čĊĠĠĠ Ġoverride Ġfun Ġconfigure Client Outbound Channel ( registration : ĠChannel Registration ) Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġdefault Core PoolSize Ġ= Ġmin čĊĠĠĠĠĠĠĠ Ġif Ġ( default Core PoolSize Ġ< ĠRuntime . get Runtime (). available Processors () Ġ* Ġ 2 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Core PoolSize Ġ= ĠRuntime . get Runtime (). available Processors () Ġ* Ġ 2 čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġregistration . task Executor (). core PoolSize ( default Core PoolSize ). max PoolSize ( default Core PoolSize Ġ* Ġ 2 ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġconfigure WebSocket Transport ( registration : ĠWebSocket Transport Registration ) Ġ{ čĊĠĠĠĠĠĠĠ Ġregistration . add Decorator Factory ( ws Handler Decorator Factory ()) čĊĠĠĠĠĠĠĠ Ġsuper . configure WebSocket Transport ( registration ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Bean čĊĠĠĠ Ġfun Ġws Handler Decorator Factory (): ĠSession WebSocket Handler Decorator Factory Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn ĠSession WebSocket Handler Decorator Factory ( websocket Service , Ġredis Operation ) čĊĠĠĠ Ġ} č Ċ } čĊ