http://www.7klian.com

利用Java 11 WebSocket API的Websocket客户端

            vertx.eventBus()
在最后一步,我们将所有内容放在一起,,并实验订阅tBTCUSD代码:
    override fun start() {
                  LOGGER.info(“received {} {}”, address,
                   { charSequence -> charSequence ?: “” }
                           .encode()
        super.onOpen(webSocket)
                [email protected]
          }
fun main() {
        webSocket.request(1)
只要适合,我城市在项目中利用vert.x,而且也有一个websocket客户端API。可是可悲的是vert.x websocket客户端有一些缺点,它不合用于重定向尽量我们不利用vert.x websocket客户端,但我们将vert.x用作小型应用措施的基本。
        return accumulatedMessage
               .consumer<JsonArray>(address)
        val uri = URI.create(“wss://api-pub.bitfinex.com/ws/2”)
             .consumerBITFINEX_EB_ADDRESS)
    }
        parts.add(message)
            CompletableFuture<Any>()
    override fun onText(webSocket: WebSocket,
                         message: CharSequence?,
            MutableList(0) { index: Int -> “” }
            vertx.eventBus()
  val symbol = “tBTCUSD”
我们重写onOpen要领以成立对bitfinex的按期ping。重要的一件事是,当您包围onOpen时,必需挪用super.onOpen,不然客户端不会向处事器发送任何数据。
        // … see repo at github for full code
  vertx.rxDeployVerticle(BitfinexConnection::class.java.name)
                .getLocalMap<Int,String>(“bitfinex.subscriptions”)
            accumulatedMessage = CompletableFuture<Any>()
        val subs = vertx.sharedData()
./gradlew run
    var parts: MutableListSequence?> = 
}
    .subscribe(
}
}
此刻,我们可以利用此侦听器配置一个暗示与bitfinex的毗连的极点:
onText动静将收集所有传输的文本数据,直到文本完成为止(凡是是一次挪用inText的环境)。文本完成后,将通过onMessage要领中的vert.x事件总线发送文本。

对付一个小型加密项目,我想利用Bitfinex WebSocket API及时获取市场数据。

               .handler { jsonMsg ->
            webSocket?.sendText(pingTxt, true)?
class BitfinexConnection : AbstractVerticle() {
    }
           .thenRun{ LOGGER.debug(“delivered {} “, bitfinexMessage)}
  val vertx = Vertx.vertx()
我花了许多时间才发明这个错误。由于侦听器是一个接口,所以我不习惯于挪用接口的超等要领。但在这种环境下这很重要。java8中引入的接口中默认要领的观念对我来说还没有成为第二个性。
            val cf: CompletionStage<*> = accumulatedMessage
    var webSocket: WebSocket? = null

                         last: Boolean): CompletionStage<*>? {
            return cf
        val client = HttpClient.newHttpClient()
               }
    }
        }
   )
    var accumulatedMessage: CompletableFuture<*> =
             .handler { jsonMsg ->
                .send(BITFINEX_EB_ADDRESS, subscribeMessage)
    fun onMessage(message: String) {
        val listener = BitfinexListener(this.vertx, subs)
            LOGGER.info(“deployed bitfinex connection {}”, id)
                           .put(“cid”, Random(2020).nextInt())
          val bitfinexMessage = jsonMsg.body().encode()
                        jsonMsg.body().encodePrettily())
            val pingTxt = JsonObject().put(“event”, “ping”)
         LOGGER.error(“deployment failed”, t) }
       { t: Throwable? -> 
        this.webSocket = client.newWebSocketBuilder()
          this.webSocket?.sendText(bitfinexMessage,true)?
                     .buildAsync(uri), listener).join()
                            .put(“message”, “websocket closed”)
                            .put(“statusCode”,503))
该类很是简朴明白,在verticle的start要领中,将初始化并启动与民众bitfinex api的websocket毗连。应通过vert.x事件总线将动静直接发送到websocket,因此我们在地点BITFINEX_EB_ADDRESS上启动利用者。
        vertx.eventBus()
        LOGGER.info(“websocket opened”)
    }
             .thenRun {-> LOGGER.info(“sent ping {}”, pingTxt)}
main要领启动Vertx并陈设bitfinex Websocket Verticle。陈设完成后,我们将带有订阅有效负载的动静发送到websocket verticle,并在非凡的eventbus地点上启动利用者。
            val completeMessage = parts.joinToString(separator = “”) 
            val subscribeMessage = JsonObject()
        { id ->
您可以在github上找到所有代码,对其举办克隆,以确保已安装Java 11或更高版本,并利用以下呼吁运行它:
                  .bfxSubscribeTickerMessage(symbol)           
            parts.clear()
          if ( webSocket==null || webSocket?.isOutputClosed()!!) {
          }
              jsonMsg.reply(JsonObject()
够多了,我们开始编码。要构建并毗连到Websocket处事器,构建器需要一个侦听器,该侦听器将侦听传入的数据包:
            accumulatedMessage.complete(null)
        val bitfinexMessage = Json.decodeValue(message)
        }
        LOGGER.info(“deploying BitfinexConnection”)

从Java SE 11开始,JDK包括一个客户端WebSocket API。Javadoc包括一些代码示例,可是您不能当纵然用这些示例。在网上搜索“ java websocket client”将主要显示有关旧JSR 352 websocket的示例和指南。配置一切以完成事情并不像预期的那样简朴,因此我编写了这个小教程。
    override fun onOpen(webSocket: WebSocket?) {
我但愿本教程将为您快速启动项目中的websocket客户端代码。

            onMessage(completeMessage)
class BitfinexListener(val vertx: Vertx) : WebSocket.Listener {
        if (last) {
       },
        this.vertx.periodicStream(60000).toObservable()
            val address = “ticker.” + symbol
          .subscribe { i ->

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读