package Ġcom . v ins ong uo . reconnect websocket wrapper Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . v ins ong uo . reconnect websocket wrapper . lib . Config Ċ import Ġcom . v ins ong uo . reconnect websocket wrapper . lib . Re connect WebSocket Wrapper Ċ import Ġokhttp 3 .* Ċ import Ġok io . ByteString Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġws Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġweb Socket Wrapper Ġ= ĠRe connect WebSocket Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient . Builder (). ping Interval ( 5 0 0 0 , ĠTimeUnit . MILLISECONDS ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Builder (). url (" wss :// echo . websocket . org "). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠWebSocket Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Closed ( web Socket : ĠWebSocket , Ġcode : ĠInt , Ġreason : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Closed ( web Socket , Ġcode , Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Closed Ġ$ reason ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Closing ( web Socket : ĠWebSocket , Ġcode : ĠInt , Ġreason : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Closing ( web Socket , Ġcode , Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Closing ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( web Socket : ĠWebSocket , Ġt : ĠThrowable , Ġresponse : ĠResponse ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Failure ( web Socket , Ġt , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Failure ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( web Socket : ĠWebSocket , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Message ( web Socket , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Message Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Log . append ("\ n Ġon Message : Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Message ( web Socket : ĠWebSocket , Ġbytes : ĠByte String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Message ( web Socket , Ġbytes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Message Ġ$ bytes ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Open ( web Socket : ĠWebSocket , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Open ( web Socket , Ġresponse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Open ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġweb Socket Wrapper . on Connect Status ChangeListener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Log . append ("\ n Ġconnect Ġstatus : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġweb Socket Wrapper . config Ġ= ĠConfig () ĊĠĠĠĠĠĠĠ Ġweb Socket Wrapper . on Pre Re connect Listener Ġ= Ġ{ request Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġto Ġbuild Ġyour Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġweb Socket Wrapper ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtv Log : ĠTextView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġtv Log Ġ= ĠfindViewById ( R . id . tv Log ) ĊĠĠĠĠĠĠĠ Ġval Ġet Send Ġ= ĠfindViewById < TextView >( R . id . et Send ) ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . btn Disconnect ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġws . close ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" test Ġto Ġdisconnect " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠfindViewById < View >( R . id . btn Send ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġet Send . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ws . send ( text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Log . append ("\ n ĠsendMessage : Ġ$ text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġws . cancel () ĊĠĠĠ Ġ} Ċ }