Files
EVEngine/docs/usr/modules/network.md
T

2.3 KiB

网络模块

脚本入口: eve.Network()

提供 HTTP 请求、TCP 客户端/服务端和基础网络状态。

基本用法

local net = eve.Network();
local req = net.newHttp("GET", "https://example.com/api");
req.setTimeout(5000);
req.submit();
// 在主循环调用 net.pump() 派发完成事件。

对象关系与调用时机

Network 创建 TcpSocket/UdpSocket/HttpRequest/Channel/Session,并通过 pump() 推进异步完成。Socket 负责传输,Channel 负责消息封装,Session 负责连接集合。

目标导向指南

发起异步 HTTP 请求

用 newHttp(method, url),设置 header、body、timeout 和 TLS 校验后 submit();每帧调用 net.pump() 派发结果。不要阻塞渲染线程等待网络。

建立 TCP 会话

服务端 newTcp() 后 bind/listen/accept,客户端 connect;用 newChannel(socket) 封装消息发送,并把多个连接加入 newSession() 统一管理。断线时从 Session 移除并清理 socket。

常见问题

  • 提交 HTTP 后不 pump:请求完成不会被主线程处理。
  • 发布环境关闭 TLS 校验:setVerifySsl(false) 只能用于受控调试。
  • 假设 TCP 一次 send 对应一次 receive:应用层必须定义消息边界。

API 快查

下列方法名来自当前 Squirrel 绑定;同一模块创建的辅助对象(例如 World、Body、Source)的方法也列在这里。

  • accept()、add()、bind()、close()、closeAll()、connect()、get()、getName()
  • getPeer()、getSocket()、isConnected()、listen()、newChannel()、newHttp()、newSession()、newTcp()
  • newUdp()、pump()、remove()、send()、sendMsg()、sendMsgString()、sendString()、sendTo()
  • sendToString()、setBody()、setBodyString()、setHeader()、setTimeout()、setVerifySsl()、submit()

使用要点

  • 模块对象和它创建的资源对象应保存在全局或实体状态中,不要在每帧重复创建。
  • 带 update(dt) 的系统应在 eve_update 调用;绘制方法应在 eve_render 调用。
  • 参数约束、默认值和返回类型以对应模块头文件及 addFunc 绑定为准;本文 API 快查与当前源码同步生成。

源码: src/modules/network/ 相关测试: 在 test/ 中搜索 network。