《一个帧同步的联机占领类小游戏实现|社区征文》

:laughing:
您好, 我浏览的您的那个,
occupationScene 简易多人混战 的例子, 按照您 Gitee 上的说法配置了下,
启动后, 登录刷新还是显示测试服 0 人在线(多开浏览器登录也是 0 人),
另外您上面那个二维码也只是 0 人在线, 请问这个是我什么地方配置的不对吗 ?
麻烦您看下, 这是我改的部分, 改了下 7456



我研究了一下 , 单独把js, json等文件放到另外一个域名下, 貌似行不通, creator构建时路径都是写死相对的
除非包含html页面一起放到cdn, 而这个方案又会导致跨域问题, 解决ws跨域,需要服务端配合输出响应头, TSRPC我又没找到哪里跨域配置的

那有点奇怪了呀, 都能显示出游戏服务器了, 在线数据只是其中一个字段罢了, 你用调试模式运行gate的dev脚本, 断点gate\src\index.ts:line:29, 即SyncServerInfo消息, 看看更新人数的逻辑是不是哪里有问题

我开发环境刚试了是正常的, 线上部署的那个也能显示哦, 你另外开个隐私窗口连上去确认一下哈

好的, 我再看下, 不过我不是在 VsCode 里面运行的,
我是在文件夹里面执行的 cmd 命令启动的 gate 和 back , 会和这有关吗 ?

是用npm来运行吗?是的话那一样的
不是的话能跑起来, 感觉也是没影响才对
服务器上我就是用nodejs命令行包裹成win服务来运行, 原理上也是一样
你还是调试一下吧, 也可能是哪里我没注意到的问题, 你找到的话一定告诉我哈

1赞

您看我这2个 gf.gate.config.json 这里只改了 authRedisConfigport ,
是不是其它地方还有需要更改的呢?

用的是这个启动的 ts-gameframework-master\backend>npm run dev
image

Mark一下

你的配置和命令行看起来没问题
人数更新backend是连上gate的websocket后, 定时发送一个消息, 通知gate进行更新的
代码在:backend\src\getGateClusterClient.ts:


    var autoSyncGameInfoHD = setInterval(() => {
        if(!client.isConnected){
            clearInterval(autoSyncGameInfoHD);
            return;
        }
        client.sendMsg("SyncServerInfo", {
            serverInfo: {
                serverId: serverCfg.gameServer.serverId,
                serverName: serverCfg.gameServer.serverName,
                serverWSUrl: serverCfg.gameServer.serverWSUrl,
                clientCount: gameServer.connections.length,
                extendData: serverCfg.gameServer.extendData,
            }
        });
    }, 1000);

你可以断点到这里看看代码有没走到这

请问断点是这样子断点吗 ?
好像没有进入函数

你要先把之前开的服务先关掉, 端口占用啦

之前开的命令窗口关闭了, 但是没有看到断点进入
image

这个里面可以看到数据, 但是刷新没显示有人数

之前那个二维码这个可以进去了:
http://www.laikouhai.com:7701/

之前的关了之后, 要重新进入调试哦
刚服务器我发布了一个版本, 修复了观众模式的一个错误, 优化了一下显示, 让观众也可以看其他人玩

是的, 我是关闭后, 重启的服务

刚刚重启了电脑, 现在可以进入断点了. 不过单步就结束了, 没进第二个断点


WebSocket 不存在跨域问题的~
是可以静态文件(含 index.html)和服务端放在不同域名的。
有什么具体报错可以截图看看~

可能是我一开始把页面放在https下了, 访问的不是wss, 是ws:\被禁止了(我猜), 现在二维码的地址是HTTP的CDN的啦, 速度还可以

1赞

mark 帧同步大佬

TSGF(ts-gamefranework)交流群群聊二维码
建了个QQ群,对房间和匹配有想法的进来说说自己的应用场景

1赞

顶顶顶6666