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

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

# 实时服务器时序图

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

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

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

# 上传脚本

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

├── mgobexs      
│   └── index.js  
1
2

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

# 示例代码

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

exports.mgobexsCode = {
    gameServer
};
1
2
3

在 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");
    }
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

# 查看日志

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

# 下载框架

为方便开发者创建自定义服务逻辑,在下载 示例代码之前,请查阅 更新历史

平台 更新时间 版本 示例代码 文档
Nodejs 2019/6/21 V1.0.1 下载 操作指南 开发指南