使用Vert.x异步下载文件的服务端和客户端

2 篇文章 0 订阅
1 篇文章 0 订阅

使用Vert.x方便的进行文件的异步下载,为了更加方便,这里使用groovy。(java同理)

  • 服务端,提供文件的下载
import io.vertx.core.Vertx
import io.vertx.ext.web.Router

def vertx = Vertx.vertx()
def server = vertx.createHttpServer()
def router = Router.router(vertx)
router.get("/api/file").handler(rc -> {
    rc.response().sendFile("your-path/your-filename")
})
server.requestHandler(router).listen(8080, ar -> {
    if (ar.succeeded()) {
        println("start successful")
    }
})
  • 客户端,下载文件,任务提供文件下载的服务器都可以
import io.vertx.core.Vertx
import io.vertx.core.file.OpenOptions
import io.vertx.core.json.JsonObject
import io.vertx.ext.web.client.WebClient
import io.vertx.ext.web.codec.BodyCodec

Vertx vertx = Vertx.vertx()
def webClient = WebClient.create(vertx)
vertx.fileSystem().open("your-filename", new OpenOptions(), ar -> {
    if (ar.succeeded()) {
        def f = ar.result()
        webClient.getAbs("http://127.0.0.1:8080/api/file")
                .as(BodyCodec.pipe(f))
                .send({
                    if (it.succeeded()) {
                        f.close()
                        webClient.close()
                    }
                })
    }
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用 Vert.x 4.0 编写 WebSocket 服务的示例代码: ```java import io.vertx.core.AbstractVerticle; import io.vertx.core.http.HttpServer; import io.vertx.core.http.ServerWebSocket; public class WebSocketServer extends AbstractVerticle { @Override public void start() { HttpServer server = vertx.createHttpServer(); server.webSocketHandler(this::handleWebSocket).listen(8080); } private void handleWebSocket(ServerWebSocket socket) { if (socket.path().equals("/your/websocket/path")) { socket.accept(); socket.writeTextMessage("Hello, client!"); socket.textMessageHandler(message -> { System.out.println("Received message from client: " + message); socket.writeTextMessage("Server received your message: " + message); }); socket.closeHandler(close -> { System.out.println("WebSocket closed"); }); } else { socket.reject(); } } } ``` 在此示例代码中,我们首先创建了一个 `HttpServer` 对象,并在其上设置了 WebSocket 处理器 `this::handleWebSocket`,然后将其绑定到本地 8080 口。 WebSocket 处理器的实现中,我们首先根据 WebSocket 的请求路径判断是否为我们需要处理的 WebSocket 连接,如果不是,则拒绝该连接。如果是,则接受该连接,并向客户发送一条欢迎消息。 接着,我们设置了该 WebSocket 连接的消息处理器,当客户发送消息时,会触发该处理器。在该处理器中,我们简单地将客户发送的消息原样返回给客户。 最后,我们设置了该 WebSocket 连接的关闭处理器,当客户关闭连接时,会触发该处理器。 以上就是使用 Vert.x 4.0 编写 WebSocket 服务的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值