快速上手多人游戏服务器开发。后续会基于 Google Agones
,更新相关 K8S
运维、大规模快速扩展专用游戏服务器的文章。拥抱☁️原生🤗 Cloud-Native!
系列
- ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(上)
- ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(中)
- ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(下)
监控面板 (@colyseus/monitor
)
@colyseus/monitor
是一个方便的工具,允许您查看和检查服务器生成的当前房间列表。
特性
- 列出所有活动房间
- 强制安排一个特定的房间
- 检查一个特定的房间
- 查看房间的状态
- 为客户端发送/广播消息
- 强制断开客户端连接
![](https://img-blog.csdnimg.cn/img_convert/19608e337f66a400e29e0130afeb1837.gif)
安装
安装模块:
npm install --save @colyseus/monitor
将它包含在你的项目中:
// ...
import { monitor } from "@colyseus/monitor";
// ...
app.use("/colyseus", monitor());
使用密码限制访问面板
您可以使用 express
中间件在 monitor
路由上启用身份验证,例如 express-basic-middleware
:
npm install --save express-basic-auth
使用 express-basic-auth
创建用户和密码。
import basicAuth from "express-basic-auth";
const basicAuthMiddleware = basicAuth({
// list of users and passwords
users: {
"admin": "admin",
},
// sends WWW-Authenticate header, which will prompt the user to fill
// credentials in
challenge: true
});
app.use("/colyseus", basicAuthMiddleware, monitor());
设置自定义房间列表列
app.use("/colyseus", basicAuthMiddleware, monitor({
columns: [
'roomId',
'name',
'clients',
{ metadata: "spectators" }, // display 'spectators' from metadata
'locked',
'elapsedTime'
]
}));
如果未指定,则默认的房间列表列为:['roomId', 'name', 'clients', 'maxClients', 'locked', 'elapsedTime']
。
负载测试 / 压力测试 (@colyseus/loadtest
)
当您想对服务器进行实战测试并了解它在实时环境中的性能时,@colyseus/loadtest
工具非常有用。
安装
安装 @colyseus/loadtest
模块:
npm install --save-dev @colyseus/loadtest
用法
colyseus-loadtest
命令需要一些参数才能工作:
script
: 该工具将要使用的自定义脚本--endpoint
: 你服务器端点 (默认使用ws://localhost:2567
)--room
: 您要连接的房间名称--numClients
: 您想连接到room
的客户端数量。
示例
这是一个脚本文件示例。基于每个连接客户端的房间生命周期事件,您可以实现一个 "bot"
来与 room
交互。
// script.ts
import { Room, Client } from "colyseus.js";
export function requestJoinOptions (this: Client, i: number) {
return { requestNumber: i };
}
export function onJoin(this: Room) {
console.log(this.sessionId, "joined.");
this.onMessage("*", (type, message) => {
console.log("onMessage:", type, message);
});
}
export function onLeave(this: Room) {
console.log(this.sessionId, "left.");
}
export function onError(this: Room, err) {
console.error(this.sessionId, "!! ERROR !!", err.message);
}
export function onStateChange(this: Room, state) {
}
把 50 个客户端连接到一个 "battle"
房间
npx colyseus-loadtest script.ts --room battle --numClients 50 --endpoint ws://localhost:2567
认证 + 社交 (@colyseus/social
)
本节介绍 @colyseus/social
的配置和用法。
@colyseus/social
是一个实验性模块,提供通用后端服务,以加快您的多人游戏开发体验。该 API
公开征求建议和改进。
如果要实现自己的身份验证方法,请参见 Room » onAuth()