Organizations

2 results for VertX
  • 之前已经展示封装成功能 Actor, 可以看到我们封装类和 skynet 类似, 在官方 vert-x 文档可以看到比较简单的 WebSocket 集成设置: import io.vertx.core.Vertx; import io.vertx.core.http.HttpServer; import io.vertx.core.http.HttpServerOptions; import io.vertx.core.http.WebSocket; public class WebSocketServerExample { public static void main(String[] args) { // 创建Vertx实例 Vertx vertx = Vertx.vertx(); // 创建Http服务器选项 HttpServerOptions options = new HttpServerOptions() .setPort(8080); // 创建Http服务器 HttpServer server = vertx.createHttpServer(options); // 监听HTTP请求并升级为WebSocket连接 server.webSocketHandler(webSocket -> { System.out.println("WebSocket连接已建立"); // 处理接收到的WebSocket消息 webSocket.handler(buffer -> { String message = buffer.toString(); System.out.println("收到消息: " + message); // 发送响应消息 webSocket.writeTextMessage("你发送的消息是: " + message); }); // 处理WebSocket连接关闭事件 webSocket.
    VertX Java Created Sun, 01 Jun 2025 18:29:00 +0800
  • 最近需要部署搭建个 WebSocket 的游戏网关服务端, 考虑之后从 Java 之中选取设计方案; 而这里首先排除 Spring 全家桶系列, 因为内部集成太过冗余且对底层操作也比较麻烦, 最后敲定方案采用仅仅对网络工具方法抽象的 Vert-X. 这里 Actor 最开始考虑 akka, 但是目前最新版本已经从开源协议转为商业协议, 为了后续规避潜在的商业纠纷最后采用同源的开源替代 pekko. 而消息交换协议, 最开始在单纯二进制和 protbuf 之间考虑, 主要问题是 protobuf 协议生成的类文件对于项目侵入太严重; 所以考虑在三之后选择性能更好且通用型更强的 msgpack. 建议对 WebSocket 协议规范 rfc6455 进行学习, 因为相对于 TCP 来说底层已经做好 帧(Frame) 概念处理, 所以直接只用处理消息接收和推送即可. 对于 WebSocket 来说基本上传递数据格式已经内置数据类型: 0x1: 文本内容 0x2: 二进制内容 0x8: 关闭连接 0x9: Ping 0xA: Pong 这主要是区分好消息格式发送什么, 用来推送给 Actor 内部消息来处理不同的业务逻辑. 另外需要设计好 actor 拓扑图, 需要对 actor 功能做基本设计分布: [ActorSystem,最基础的系统] | | [Supervisor,核心管理器负责监控所有 Worker] --- [Worker:WebSocket,网络层负责协调客户端和Actor关联,同时负责动态会话创建] | | | | | |- [Worker * N:(UUID) Session, 每个会话都动态创建 actor] | | | |- [会话Actor是不断动态创建的].
    VertX Java Created Wed, 07 May 2025 13:51:05 +0800