介绍
Colyseus 是一个 Node.js 的多人游戏服务器框架,你可以通过它轻松地创建多人游戏,而 colyseus-monitor 则是一个非常实用的监控工具,它可以帮助你实时监控服务器的状态。
在这篇文章中,我将向大家介绍如何在自己的 Node.js 项目中使用 colyseus-monitor 包,并通过详细的使用示例帮助大家快速上手。
安装
在使用 colyseus-monitor 之前,你需要首先在自己的项目中安装该包。可以使用 npm 或 yarn 进行安装。
# 使用 npm 安装 npm install colyseus-monitor # 使用 yarn 安装 yarn add colyseus-monitor
使用
使用 colyseus-monitor 的步骤非常简单。跟其他 Node.js 模块类似,我们需要在应用程序中引入该模块,创建一个监控服务器,然后启动该服务器。
在下面的示例中,我们将展示如何创建一个基本的 colyseus-monitor 服务器:
-- -------------------- ---- ------- ----- - ------- - - ---------------------------- ----- ---- - ---------------- ----- ---- - ---------------- -- ----- -- ---- ---- --- ----- ------ - -------------------- -- ----- ---------------- -- ----- ------------------- -- -- - ---------------------- -- ---- --------- ---
你可以将以上的代码复制到你的项目中,然后在命令行中运行 node index.js
命令来启动应用程序。
当应用程序成功启动后,你可以在浏览器中访问 http://localhost:8080/colyseus
来打开监控页面。
配置
当你开始使用 colyseus-monitor 时,可以通过配置选项来对其进行设置,以使其适应你的项目需求。
以下是 colyseus-monitor 支持的配置选项:
选项 | 描述 |
---|---|
hostname | colyseus-monitor 监听的主机名。默认值是 0.0.0.0 。 |
port | colyseus-monitor 监听的端口。默认值是 2657 。 |
express | 传入一个 Express 应用程序实例,使 colyseus-monitor 能够与你的项目协同工作。 |
ws | WebSocket 选项对象。默认值如下:{ path: '/colyseus' } 。 |
interval | 数据定时推更新时间间隔,单位毫秒。默认值是 1000 ms。 |
pingInterval | 数据推送间隔,如果您以某些方式使用 setInterval 定期推数据给客户端,则应该将此时间设置为'pingInterval'+10ms 。这是仅在没有客户端连接时进行的推荐推行动。默认值为 5000 ms。推送数据的 API 详情可见下文。 |
auth | {id: string; password: string} = {id: "", password: ""}鉴权相关,配合中间件 colyseusMonitorAuth() 或者自定义来进行鉴权 |
label | 必传。默认为空。这是显示在 colyseus-monitor 页面上的房间标签,所以您可以详细声明一下您的游戏。 |
transport | 数据传输类型,可以是 websocket 和 http 两种。默认为 websocket。 |
metadata | 任何你想在监视器界面中显示的数据对象。这在展示服务器状态的已解锁物品和可用游戏模式方面特别有用,MD 的使用方式是 key-value,这里我们通过如下方式设置:{ gameModes: getPurchasedGameModes(),}。这样会使 colyseus-monitor 显示一个名为 'gameModes' 的标签,并在括号中包含字典中所有的键值对(在本例中为 getPurchasedGameModes() 返回的所有键值对)。 |
presence | “presence”分成2个部分,首先是通过存储值在 redis 密钥中确定当地实例(这将启用colyseus的presenceMiddleware),第二个是将本地存在的玩家状态突出显示出来,使存在的活动用户与其他玩家易于区分。默认为 false。 |
例如,以下是使用 auth 和 metadata 配置的示例:
-- -------------------- ---- ------- ----- - ------- - - ---------------------------- ----- ---- - ---------------- ----- ---- - ---------------- -- ----- -- ---- ---- --- ----- ------ - -------------------- -- ----- --------------- - ----- - --- ---------- --------- --------------- -- -- ---------- --------- - ---------- ----------- -------- ----- --------- -------------- --- -- ----- ------------------- -- -- - ---------------------- -- ---- --------- ---
API
在上文例子中我们使用了 monitor()
方法来创建一个 colyseus-monitor 服务器,此处详细介绍其 API。
monitor(server[, options])
创建一个新的监视器实例。以下是该方法支持的选项:
hostname
- 监听主机名。默认为0.0.0.0
port
- 监听端口。默认为2657
pingInterval
- 数据推送间隔。默认为 5000ms。ws
- WebSocket 套接字选项。默认为{ path: '/colyseus' }
。label
- 显示在监视器页面上的标签。transport
- 数据传输类型。默认为 'websocket'。metadata
- 任何你可以在监视器界面上显示的数据对象。interval
- 数据定时推送更新时间间隔,单位毫秒。默认为1000ms。presence
- presence 分成 2 个部分,第一部分通过存储值在 Redis 密钥中确定当地实例(这将启用 colyseus 的 presenceMiddleware),第二个是将本地存在的玩家状态突出显示出来,使存在的活动用户与其他玩家易于区分。默认为 false。auth
- 鉴权信息。通过插入中间件 colyseusMonitorAuth() 或者自定义鉴权(比如token校验)来完成。auth 默认为 {id: '', password: ''}。
monitor.handleUpgrade(request, socket, head)
在 WebSocket 升级请求时绑定智能开关。
server.on('upgrade', (request, socket, head) => { monitor.handleUpgrade(request, socket, head); });
有了这个绑定,你就可以创建一个 Colyseus.Monitor
实例,并将其绑定到客户端的 WebSocket 连接上。
const ws = new WebSocket('ws://localhost:8080/colyseus'); const monitor = new Colyseus.Monitor(ws);
monitor.publish(data)
当使用 HTTP 传输机制时,可以定期地将监视器数据发布给所有客户端。在下面的示例中,我们将监视器数据每隔 10 秒钟推送一次。
setInterval(() => { monitor.publish(); }, 10000);
示例代码
下面提供一个完整的使用示例,仅供参考。
-- -------------------- ---- ------- ----- - ------- - - ---------------------------- ----- ---- - ---------------- ----- ------- - ------------------- ----- - ------ - - -------------------- ----- ------ - ----------------------- ----- ---- - ---------------- -- ----- ----- --- - ---------- -- ---- ---- --- ----- ------ - ----------------------- -- -- -------- --- ----- ---------- - --- -------- ------- ------- -------- --- --- -- ---- ---------------------------- -------- -- ----- --------------- - ------ --- ---- -------- -- ------------- --------- - -- ------ ---------- ----------- -------- ----- --------- ------------- -- ----- - --- ------ --------- ----- -- -- ------ --------- ----- -- -- -------- -- --------- ---- -- ------------ --- -- ----- ------------------- -- -- - ---------------------- -- ---- --------- ---
这段代码将启动一个 HTTP 服务器,并创建一个 colyseus 服务器,在这个 colyseus 服务器中注册 MyRoom
房间。它还创建了 colyseus-monitor 服务器,并将它绑定到 http 服务器上,然后启动了整个应用程序。
总结
在这篇文章中,我们详细介绍了 npm 包 colyseus-monitor 的使用方法,既然您能够仔细阅读到这里,那么希望它对您在开发游戏时的监控有所帮助。
如果您需要更深入的探索,可以去 官方网站 获取更多信息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055eae81e8991b448dc354