使用简介

最近更新时间:2019-08-13 14:41:22

自定义服务逻辑的 实时服务器 部分包含两部分内容:

  1. 房间的系列操作会自动触发到自定义服务逻辑。
  2. 前端请求到自定义服务逻辑。当玩家加房成功后,可以使用客户端 SDK 中的 sendToGameServer 方法直接与游戏服务器通信,实现游戏服务端拓展逻辑,如保存玩家数据,游戏状态同步等。

实时服务器时序图

注意:

onInitGameData 方法是在 onCreateRoom 之后,收到 onRecvFromClient 广播时检查 gameData。

  • 如果 gameData 为空,先执行 onInitGameData 再执行 onRecvFromClient。
  • 如果 gameData 不为空,只执行 onRecvFromClient。

开通自定义实时服务器后,客户端发起的房间相关操作,均被 MGOBE 后台广播到自定义实时服务器。客户端、 MGOBE 后台、自定义实时服务器三者交互时序图如下:

上传脚本

开发者只需要提供一个 index.js 脚本,然后按照以下文件夹结构压缩成 zip 文件,在 MGOBE 控制台上传即可。

├── mgobexs      
│   └── index.js  
注意:

zip 文件的根目录内只能有一个文件夹,建议命名为 mgobexs。mgobexs 目录下的 index.js 文件是实时服务器入口。

示例代码

开发者在接入实时服务器时,需要在 index.js 中导出一个 mgobexsCode 对象,该对象拥有一个 gameServer 属性。Node.js 示例代码如下:

exports.mgobexsCode = {
    gameServer
};

在 gameServer 中需要实现 onInitGameData、onRecvFromClient、onCreateRoom、onJoinRoom 等接口。NodeJS 示例代码如下:

const gameServer = {
    // 消息模式
    mode: 'sync',
    // 初始化游戏数据
    onInitGameData: function () {
        return {};
    },
    // 监听客户端数据
    onRecvFromClient: function onClientData(args) {
        args.SDK.logger.debug("onRecvFromClient");
        args.SDK.exitAction();
    },
    // 监听加房广播
    onJoinRoom: function (args) {
        args.SDK.logger.debug("onJoinRoom");
    },
    // 监听创建房间广播
    onCreateRoom: function (args) {
        args.SDK.logger.debug("onCreateRoom");
    },
    // 监听退房广播
    onLeaveRoom: function (args) {
        args.SDK.logger.debug("onLeaveRoom");
    },
    // 监听玩家被移除广播
    onRemovePlayer: function (args) {
        args.SDK.logger.debug("onRemovePlayer");
    },
    // 监听房间销毁广播
    onDestroyRoom: function (args) {
        args.SDK.logger.debug("onDestroyRoom");
    },
    // 监听修改房间属性广播
    onChangeRoom: function (args) {
        args.SDK.logger.debug("onChangeRoom");
    },
    // 监听修改玩家自定义状态广播
    onChangeCustomPlayerStatus: function (args) {
        args.SDK.logger.debug("onChangeCustomPlayerStatus");
    },
    // 监听玩家网络状态变化广播
    onChangePlayerNetworkState: function (args) {
        args.SDK.logger.debug("onChangePlayerNetworkState");
    },
    // 监听开始帧同步广播
    onStartFrameSync: function (args) {
        args.SDK.logger.debug("onStartFrameSync");
    },
    // 监听停止帧同步广播
    onStopFrameSync: function (args) {
        args.SDK.logger.debug("onStopFrameSync");
    }
};

查看日志

开发者使用 SDK.logger 输出的日志,您可前往控制台选择【实时服务器】,单击【查看日志】链接进行查看。