hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

Android/Kotlin: OkHttp3๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WebSocket ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฒ•
๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ/๊ธฐํƒ€

Android/Kotlin: OkHttp3๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ WebSocket ํ†ต์‹ ์„ ํ•˜๋Š” ๋ฒ•

2021. 7. 12. 12:22
728x90

1. AndroidManifest.xml์— ์ž‘์„ฑ

<uses-permission android:name="android.permission.INTERNET" />

 

2. build.gradle(Module)์— ์ž‘์„ฑ

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:3.12.12'
    ...
}

 

3. ListenerClass ์ƒ์„ฑ

import android.util.Log
import okhttp3.Response
import okhttp3.WebSocket
import okhttp3.WebSocketListener
import okio.ByteString

class WebSocketListener : WebSocketListener() {
    override fun onOpen(webSocket: WebSocket, response: Response?) {
        webSocket.send("{\"type\":\"ticker\", \"symbols\": [\"BTC_KRW\"], \"tickTypes\": [\"30M\"]}")
        webSocket.close(NORMAL_CLOSURE_STATUS, null) //์—†์„ ๊ฒฝ์šฐ ๋Š์ž„์—†์ด ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•จ
    }

    override fun onMessage(webSocket: WebSocket?, text: String) {
        Log.d("Socket","Receiving : $text")
    }

    override fun onMessage(webSocket: WebSocket?, bytes: ByteString) {
        Log.d("Socket", "Receiving bytes : $bytes")
    }

    override fun onClosing(webSocket: WebSocket, code: Int, reason: String) {
        Log.d("Socket","Closing : $code / $reason")
        webSocket.close(NORMAL_CLOSURE_STATUS, null)
        webSocket.cancel()
    }

    override fun onFailure(webSocket: WebSocket?, t: Throwable, response: Response?) {
        Log.d("Socket","Error : " + t.message)
    }

    companion object {
        private const val NORMAL_CLOSURE_STATUS = 1000
    }
}

 

webSocket.send()๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค.

override fun onMessage()๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š”๋‹ค.

 

4. ์‚ฌ์šฉ๋ฐฉ๋ฒ•

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import okhttp3.OkHttpClient
import okhttp3.Request

class MainActivity : AppCompatActivity() {

    private lateinit var client: OkHttpClient

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        client = OkHttpClient()

        val request: Request = Request.Builder()
            .url("wss://pubwss.bithumb.com/pub/ws")
            .build()
        val listener: WebSocketListener = WebSocketListener()

        client.newWebSocket(request, listener)
        client.dispatcher().executorService().shutdown()
    }
}

 

๋กœ๊ทธ๋ฅผ ํ†ตํ•ด ๊ฐ’์ด ์ž˜ ๋“ค์–ด์˜ด์„ ํ™•์ธ

url์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

์•ฑ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ„์† ํ†ต์‹ ํ•˜๋ฏ€๋กœ ์ ์ ˆํ•œ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

https://ssaurel.medium.com/learn-to-use-websockets-on-android-with-okhttp-ba5f00aea988

 

Learn to use WebSockets on Android with OkHttp

Like you should know, WebSocket is a computer communications protocol, providing full-duplex communication channels over a single TCP…

ssaurel.medium.com

https://trinitytuts.com/connect-to-websocket-on-android-using-okhttp/

 

Connect to WebSocket on Android using OKHTTP - TrinityTuts

Learn how to create a WebSocket connection in your Android Application and get data from the socket in your Android Application.

trinitytuts.com

 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ/๊ธฐํƒ€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Android/Kotlin] getString(), getColor(), getDrawable() ์‚ฌ์šฉ๋ฒ• (strings.xml, colors.xml, drawable.xml Resource ๊ฐ€์ ธ์˜ค๊ธฐ)
    • Android Studio: viewBinding ์‚ฌ์šฉ๋ฒ• (kotlin synthetics ๋Œ€์ฒด)
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”