node-android API参考手册:NodeContext、Dns、Url、libuvpp Handle/Callback全量API速查清单

📅 2026/8/24 9:15:57
node-android API参考手册:NodeContext、Dns、Url、libuvpp Handle/Callback全量API速查清单
node-android API参考手册NodeContext、Dns、Url、libuvpp Handle/Callback全量API速查清单【免费下载链接】node-androidRun Node.js on Android by rewrite Node.js in Java项目地址: https://gitcode.com/gh_mirrors/no/node-androidnode-android是一个开源项目它用 Java 重写 Node.js让 Android 应用直接运行 Node.js 0.10.x 兼容 API。本文是一份面向新手的 API 速查手册系统梳理 NodeContext 事件循环、Dns 域名解析、Url 解析以及 libuvpp 全部 Handle / Callback 接口帮你快速上手 Android 版 Node.js 开发。 30 秒认识 node-android⚡在 Android 上运行 Node.jsNode.js 0.10.x 兼容 APIJava 实现多线程每个 Java 线程可持有独立的NodeContext事件循环libUV 原生支持基于 libuvppOracle libuv-JNI 移植版网络全家桶HTTP / HTTPPUDP 上的 HTTP/ TCP / UDT / DNS / IPv6扩展EventEmitter、Stream、WebSocket、NaCL 加密获取源码git clone https://gitcode.com/gh_mirrors/no/node-android 核心模块与源码位置模块源码路径职责事件循环上下文app/src/main/java/com/iwebpp/node/NodeContext.java封装 libuv Loop定时器、nextTickDNS 解析app/src/main/java/com/iwebpp/node/Dns.javalookup / reverse 域名解析URL 解析app/src/main/java/com/iwebpp/node/Url.javaNode 风格 parse / format / resolve定时器JS 侧app/src/main/java/com/iwebpp/node/Timers.java与 NodeContext 配套Handle 族app/src/main/java/com/iwebpp/libuvpp/handles/事件循环上的所有句柄Callback 族app/src/main/java/com/iwebpp/libuvpp/cb/全部回调接口与分发器原生工具入口app/src/main/java/com/iwebpp/libuvpp/LibUV.java版本、内存、CPU、IPv4/IPv6 判断等静态方法 NodeContextAndroid 上的 Node.js 事件循环NodeContext是项目的核心类每个实例内部持有一个LoopHandlelibuv 事件循环可放在独立 Java 线程中运行。API说明new NodeContext()创建上下文内部创建 LoopHandle并触发原生库加载getLoop()获取底层LoopHandle用于创建各类 Handleexecute()启动事件循环阻塞当前线程直至没有活跃句柄destroy()销毁循环并释放原生资源setTimeout(listener, after)一次性定时器毫秒返回TimerHandleclearTimeout(timer)关闭定时器setInterval(listener, repeat)周期定时器毫秒clearInterval(timer)关闭周期定时器nextTick(next)下一个 tick 触发随后自动关闭utcDate()带 1 秒缓存的 UTC 日期字符串三个监听器接口均为函数式单方法接口NodeContext.TimeoutListener.onTimeout()— setTimeout 触发NodeContext.IntervalListener.onInterval()— setInterval 触发NodeContext.nextTickListener.onNextTick()— nextTick 触发 Dns域名解析 API 一览Dns继承EventEmitter2提供 Node.js 风格的全局dns能力全部为静态方法。API说明Dns.lookup(domain)同步解析返回第一个匹配 IPString失败返回 nullDns.lookup(domain, family)family4只取 IPv4family6只取 IPv6Dns.reverse(ip)反向解析返回域名ListStringDns.lookup(domain, family, cb)异步版本回调接口lookupCallback.onLookup(err, ip, family)Dns.reverse(ip, cb)异步版本回调接口reverseCallback.onReverse(err, domains) 内置 24 种 c-ares DNS 错误码及其中文/英文描述如NODATA服务器无数据返回、SERVFAIL一般故障、TIMEOUT查询超时、CANCELLED查询取消等便于诊断解析失败原因。 UrlNode 风格 URL 解析Url继承EventEmitter2底层复用 Android 的Uri解析。API说明Url.parse(urlStr)快捷解析默认解析查询串、斜杠表示 hostUrl.parse(urlStr, parseQueryString, slashesDenoteHost)完整解析返回UrlObjUrl.format(obj)由UrlObj重建 URL 字符串Url.resolve(from, to)相对路径拼接解析UrlObj字段一览与 Node.jsurl.parse对齐字段含义href完整 URL小写protocol/slashes协议如http:/ 是否带//host/hostname/port主机名端口 / 主机名 / 端口号auth认证信息userinfopathname/path/search/query路径 / 路径查询 /?查询串/ 查询串hash锚点含#queryParams解析后的MapString, String仅保留每个 key 第一个值 libuvpp Handle 全量清单所有 Handle 均继承自com.iwebpp.libuvpp.handles.Handle基类公共 API 为ref()/unref()/isClosing()/close()。句柄必须依附于一个LoopHandle并最终调用 close() 释放。 事件循环LoopHandlehandles/LoopHandle.javaAPI说明run()DEFAULT 模式阻塞循环直到无活跃句柄runOnce()/runNoWait()单轮 / 非阻塞轮询适合 UI 线程心跳stop()停止循环close()/closeAll()/destroy()关闭全部句柄 / 销毁循环getLastError()/list()/pointer()最近错误 / 句柄列表 / 原生指针⏱ 定时器TimerHandlesetTimerFiredCallback(cb)、setCloseCallback(cb)、start(timeout, repeat)、stop()、again()、getRepeat()/setRepeat(ms)、close() 网络Handle关键 APITCPHandleresolve()、getSocketName()、getPeerName()配合 Stream 读写回调UDPHandlesetRecvCallback()、setSendCallback()、setCloseCallback()、address()UDTHandleresolve()、getSocketName()、getPeerName()基于 UDP 的高吞吐传输PipeHandleconnect(name)Unix domain socket / IPCTTYHandleresetMode()、静态guessHandleType(fd) IO 与信号Handle关键 APIPollHandlesetPollCallback(cb)、close()fd 就绪轮询CheckHandlesetCheckCallback(cb)、setCloseCallback(cb)、close()IdleHandlesetIdleCallback(cb)、setCloseCallback(cb)、close()AsyncHandlesetAsyncCallback(cb)、close()跨线程唤醒SignalHandlesetSignalCallback(cb)、start(signal)/start(signum)、stop()、close()ProcessHandlesetExitCallback(cb)、setCloseCallback(cb)、close() 文件Handle关键 APIFileEventHandlesetFileEventCallback(cb)、setCloseCallback(cb)、stop()、close()FilePollHandlesetFilePollCallback(cb)、setStopCallback(cb)、close() 工厂DefaultHandleFactory/HandleFactorynewAsyncHandle()、newCheckHandle()、newTimerHandle()、newTCPHandle()、newUDPHandle()、newUDTHandle()、newPipeHandle()、newTTYHandle()、newPollHandle()、newProcessHandle()、newFileEventHandle()、newFilePollHandle()、newFiles()等统一从指定 Loop 创建句柄。 libuvpp Callback 速查回调接口统一位于app/src/main/java/com/iwebpp/libuvpp/cb/按业务分组分组回调接口定时器TimerCallbackonTimer循环辅助AsyncCallback、CheckCallback、IdleCallback、PollCallback、SignalCallback流StreamStreamReadCallback、StreamRead2Callback、StreamWriteCallback、StreamConnectCallback、StreamConnectionCallback、StreamCloseCallback、StreamShutdownCallback文件FileCallback、FileOpenCallback、FileCloseCallback、FileReadCallback、FileReadDirCallback、FileReadLinkCallback、FileWriteCallback、FileStatsCallback、FileUTimeCallback、FileEventCallback、FilePollCallback、FilePollStopCallback子进程ProcessExitCallback、ProcessCloseCallbackUDPUDPRecvCallback、UDPSendCallback、UDPCloseCallback底层分发机制进阶CallbackHandler— 分发器接口含约 29 个handle*Callback(...)方法原生层所有回调经此路由到用户代码CallbackExceptionHandler— 汇聚回调中的异常LoopHandle.run()时统一抛出ContextProvider/CallbackHandlerFactory— 允许为每个循环绑定用户上下文与自定义分发器 典型用法事件循环四步走创建NodeContext内部即LoopHandle在getLoop()上创建 Handle并注册 Callback调用execute()/run()驱动循环用close()/destroy()收尾避免句柄泄漏最小心跳示例NodeContext ctx new NodeContext(); ctx.setTimeout(new NodeContext.TimeoutListener() { Override public void onTimeout() { ctx.getLoop().stop(); } }, 1000); ctx.execute(); ctx.destroy(); 新手速查清单✅ 每个 Java 线程使用独立NodeContext互不干扰✅ 每个 Handle 用完必须close()最后destroy()循环✅ UI 线程轮询用runOnce()/runNoWait()常驻服务用run()✅Dns.lookup为同步调用解析失败返回nullJS 场景优先用回调版本✅Url.parse得到UrlObj后可改字段再用Url.format重建 URL✅ 原生系统信息走LibUV静态方法version()、getFreeMem()、getCPUs()、isIPv4/isIPv6掌握 NodeContext、Dns、Url 三大核心类与 libuvpp 的 Handle / Callback 体系你就能完整使用 node-android 在 Android 上构建类 Node.js 的网络与 IO 应用了。【免费下载链接】node-androidRun Node.js on Android by rewrite Node.js in Java项目地址: https://gitcode.com/gh_mirrors/no/node-android创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考