안녕하세요.
업비트 api가 얼마 전에 공개되어서 호가창 불러오기 시도중인데 잘 안 되네요..
1. 업비트 공식 문서의 예제에 있는 wscat 이용한 방식은 잘 됩니다. (O)
$ wscat -c wss://api.upbit.com/websocket/v1
connected (press CTRL+C to quit)
[{"ticket":"test"},{"type":"orderbook","codes":["KRW-BTC"]}]
< {"code":"KRW-BTC","opening_price":7030000.00000000,"high_price":7044 bla bla ...........
2. https://www.websocket.org/echo.html 에서 간단히 웹소켓 테스트 해볼 수 있는데, 잘 됩니다. (O)
3. 크롬 extension 중 하나인 Simple WebSocketClient 라는 프로그램에서는 안됩니다. (X)
연결은 되지만 [{"ticket":"asdAASD"},{"type":"orderbook","codes":["KRW-BTC"]}] 을 보내도 반응이 없습니다.
4. 코틀린(자바)으로 아래 클래스처럼 만들어 해봤는데 안됩니다. (X). OkHttp의 웹소켓을 이용
연결은 되지만 [{"ticket":"asdAASD"},{"type":"orderbook","codes":["KRW-BTC"]}] 을 보내도 반응이 없습니다.
class UpbitWsClient { val gson = Gson() var webSocketList: MutableList<WebSocket> = mutableListOf() val orderbookListener = object : WebSocketListener() { override fun onOpen(webSocket: WebSocket?, response: Response?) { println("onOpen, $response") webSocket?.send(createOrderbookTicket()) } override fun onMessage(webSocket: WebSocket?, text: String?) { println("onMessage, $text") } override fun onClosed(webSocket: WebSocket?, code: Int, reason: String?) { println("onClosed") } override fun onFailure(webSocket: WebSocket?, t: Throwable?, response: Response?) { println("onFailure") } } fun startListenOrderbook() { val request = Request.Builder() .url("wss://api.upbit.com/websocket/v1") .build() val okHttpClient = OkHttpClient() val webSocket = okHttpClient.newWebSocket(request, orderbookListener) webSocketList.add(webSocket) } fun createOrderbookTicket(): String { val ticket = Ticket("test") val codeList = arrayListOf("KRW-BTC") val type = Type("trade", codeList) return gson.toJson(arrayListOf(ticket, type)) } data class Ticket(val ticket: String) data class Type(val type: String, val codes: List<String>) fun close() { webSocketList.forEach { it.close(1000, "bye") } } }
서버 주소를 업비트가 아닌 에코서버 (wss://echo.websocket.org) 로 지정해 보았더니 이 경우에는
1, 2, 3, 4 전부 잘 됩니다.
아 그리고 참고로, send 시 값을 엉터리로 보내면 (예: abasdfearg)
1 -> {"error":{"name":"WRONG_FORMAT","message":"Format이 맞지 않습니다."}}
2 -> RECEIVED: [object Blob] (1과 똑같이 오는 걸로 보입니다)
3 -> 반응 없음
4 -> 반응 없음
제가 뭘 잘못한 것일까요 ㅠ
-------------------------------------
꼬리말
* 게시글 내용 삭제시 레벨 강등
* 질문은 각 주제별 게시판에.
비트코인 암호화화폐 커뮤니티 땡글~ 땡글~
-------------------------------------