ColyseusJS 轻量级多人游戏服务器开发框架 - 中文手册(系统保障篇)

快速上手多人游戏服务器开发。后续会基于 Google Agones,更新相关 K8S 运维、大规模快速扩展专用游戏服务器的文章。拥抱☁️原生🤗 Cloud-Native!

系列

监控面板 (@colyseus/monitor)

@colyseus/monitor 是一个方便的工具,允许您查看和检查服务器生成的当前房间列表。

特性

  • 列出所有活动房间
    • 强制安排一个特定的房间
  • 检查一个特定的房间
    • 查看房间的状态
    • 为客户端发送/广播消息
    • 强制断开客户端连接

安装

安装模块:

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 工具非常有用。

asciicast

安装

安装 @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()

安装

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值