Server.lua
介绍
- Server.lua是服务端项目的入口文件,通过命令行
-s启动,类型为DmTcpServer配套客户端组件是 DmTcpClient。 - 服务端客户端之间使用
table格式定义消息,通过唯一的客户通信标识cid进行交互。 - 服务端目前可使用组件: Sqlite。
Server.lua
local Server =
{
名称 = "服务端 v0.1",
端口 = 17173,
扩展组件 = {
},
扩展脚本 = {
},
系统事件 = {
启动 = function(server)
调试输出("启动了",server)
end,
关闭 = function(server)
调试输出("关闭了",server)
end,
连接 = function(server,conn)
调试输出("连接",conn)
server.发送(conn.cid,{cmd="系统提示",text="欢迎进入游戏~"})
end,
消息 = function(server,tbl)
调试输出("消息",tbl)
end,
断开 = function(server,conn)
调试输出("断开",conn)
end,
命令 = function(server,cmd) -- 控制命令行输入的内容会触发到这里
调试输出("命令",cmd)
end,
}
}
return Server
Client.lua
local 客户端配置 =
{
类型 = "DmTcpClient",
名称 = "客户端",
ip = "127.0.0.1",
端口 = 17173,
系统事件 = {
创建 = function(client)
调试输出("创建",client)
end,
进入 = function(client)
调试输出("连接成功",client.cid)
end,
消息 = function(client,tbl)
调试输出("消息",tbl)
end,
断开 = function(client)
调试输出("连接断开")
end,
}
}
return 客户端配置
配置项
扩展组件
- 目前可使用:
Sqlite - 组件是一个个配置项文件,后缀名为.lua,需要保存到工程目录下,然后加入到
扩展组件。
扩展组件 = {
"SqliteDB.lua"
},
扩展脚本
- 自定义的Lua脚本,没有格式要求。DM3使用Lua5.4,没有特殊限制,你可以用来封装自己的系统或者常用的公共函数。
- 扩展脚本会在游戏组件初始化之前载入执行。依次执行完成后触发 系统事件 🔹 启动
扩展脚本 = {
"系统.lua",
...
...
},
属性
系统信息
- 类型:
table - 读写:
只读 - 详情:当前服务端统计信息。
| 名称 | 类型 | 说明 |
|---|---|---|
在线人数 | 数值 | |
最高在线 | 数值 | |
接收消息 | 数值 | 累计接收到客户端消息次数 |
接收流量 | 数值 | 累计接收到客户端消息流量 单位:byte |
发送消息 | 数值 | 累计往客户端发送消息次数 |
发送流量 | 数值 | 累计往客户端发送消息流量 单位:byte |
消息队列 | 数值 | 剩余等待处理的消息数量 |
运行时间 | 文本 | 运行时间字符串描述 |
调试输出(server.系统信息)
方法
| 发送 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:向客户端发送消息。 | ||||||||||||||||
示例注意事项 1、服务端接收到带有syncid编号的客户端同步消息,必须使用同样的syncid发送才会同步。 |
| 断开 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:断开全部连接或指定连接。 | ||||||||||||||
示例
|
| 暂停连接 |
|---|
| 说明:服务端将不再接受新的客户端连接请求,已建立的连接会继续保持,仍可正常通信。 |
示例注意事项 1、通常配套恢复连接使用。2、典型应用场景:服务器维护或升级时优雅关闭,负载过高时的自我保护机制。 |
| 恢复连接 |
|---|
| 说明:服务端恢复接收客户端连接请求。 |
示例注意事项 1、通常配套暂停连接使用。 |
| 加入事件 | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:加入一个自定义事件。 | ||||||||||||||||||||
示例 |
| 删除事件 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 说明:删除指定自定义事件。 | ||||||||
示例 |
系统事件
🔹 启动
服务端启动后触发。
| 回调参数 | 类型 | 说明描述 |
| server | 服务器对象 | DmTcpServer |
示例
系统事件 = {
启动 = function (server)
调试输出("启动了")
end,
}
🔹 关闭
服务端关闭时触发。
| 回调参数 | 类型 | 说明描述 |
| server | 服务器对象 | DmTcpServer |
示例
系统事件 = {
关闭 = function (server)
调试输出("关闭了")
end,
}
🔹 连接
有客户端连接时触发。
| 回调参数 | 类型 | 说明描述 | |||||||||||||||
| server | 服务器对象 | DmTcpServer | |||||||||||||||
| conn | table | 客户信息
|
示例
系统事件 = {
连接 = function(server,conn)
调试输出("连接",conn)
end,
}
🔹 消息
接收到客户消息时触发
| 回调参数 | 类型 | 说明描述 | |||||||||||||||
| server | 服务器对象 | DmTcpServer | |||||||||||||||
| tbl | table | 客户消息
|
示例
系统事件 = {
消息 = function(server,tbl)
调试输出("消息",tbl)
local cid = tbl.cid
local syncid = tbl.syncid
local 信息 = tbl.msg
if (信息.cmd == "自增") then
server.发送(cid,{结果=信息.num + 1},syncid) -- 同步返回
return
end
end,
}
🔹 断开
客户断开时触发
| 回调参数 | 类型 | 说明描述 | ||||||||||||
| server | 服务器对象 | DmTcpServer | ||||||||||||
| conn | table | 客户信息
|
示例
系统事件 = {
断开 = function(server,conn)
调试输出("断开",conn)
end,
}
🔹 命令
捕获控制台的输入内容
| 回调参数 | 类型 | 说明描述 |
| server | 服务器对象 | DmTcpServer |
| cmd | 文本 | 控制台命令 |
示例
系统事件 = {
命令 = function(server,cmd) -- 控制命令行输入的内容会触发到这里
调试输出("命令",cmd)
end,
}
🔹 自定义事件
是指通过Api [加入事件] 创建的事件。
| 回调参数 | 类型 | 说明描述 |
| server | 服务器对象 | DmTcpServer |
| 事件附加 | table | 是指通过Api [加入事件]中传递进来的 附加信息 |
| dt | 数值 | 事件执行的实际间隔时间 |
| time | 数值 | 事件执行的总时间 |
示例
系统事件 = {
启动 = function(server)
server.加入事件("定时器",{计次=0},1000,false)
end,
定时器 = function (server,tbl,dt,time)
tbl.计次 = tbl.计次 + 1
调试输出("时钟 " .. tbl.计次 .. "秒")
end,
}
