我正在尝试使用托管在同一实例/计算机上不同端口上的多个信令 Web 服务器创建多人游戏体验,但 Matchmaker 无法正常将客户端转发到未占用的信令服务器。
我已经创建了一个像素流应用程序,现在我想制作它,以便可以在单个实例上使用多个堆栈将每个客户端连接到其特定的游戏实例并启用多人游戏,并且我为此使用匹配器,因此每当客户端访问时他获得的 localhost 会根据占用情况自动转发到 localhost:70 或 80
但是当我启动 matchmaker,然后使用以下配置启动 2 个信令服务器,然后访问 localhost:90 时,它会显示“所有 2 个 Cirrus 服务器都在使用中。在……秒后重试。”
此外,我已将信令服务器 config.json 中的 MatchmakerAddress 设置为“localhost”,因此它应该从那里转发我,但这也不起作用。
这是 Matchmaker config.json
{
"HttpPort": 90,
"UseHTTPS": false,
"MatchmakerPort": 9999,
"LogToFile": true
}
这是信令服务器 1 config.json
{
"UseFrontend": false,
"UseMatchmaker": true,
"UseHTTPS": false,
"UseAuthentication": false,
"LogToFile": true,
"LogVerbose": true,
"HomepageFile": "player.html",
"AdditionalRoutes": {},
"EnableWebserver": true,
"MatchmakerAddress": "localhost",
"MatchmakerPort": 9999,
"PublicIp": "localhost",
"HttpPort": 80,
"HttpsPort": 443,
"StreamerPort": 8888,
"SFUPort": 8889
}
这是信令服务器 2 config.json
{
"UseFrontend": false,
"UseMatchmaker": true,
"UseHTTPS": false,
"UseAuthentication": false,
"LogToFile": true,
"LogVerbose": true,
"HomepageFile": "player.html",
"AdditionalRoutes": {},
"EnableWebserver": true,
"MatchmakerAddress": "localhost",
"MatchmakerPort": 9999,
"PublicIp": "localhost",
"HttpPort": 70,
"HttpsPort": 443,
"StreamerPort": 8887,
"SFUPort": 8885
}
信令服务器日志: SS1:
12:15:00.460 Config: {
"UseFrontend": false,
"UseMatchmaker": true,
"UseHTTPS": false,
"UseAuthentication": false,
"LogToFile": true,
"LogVerbose": true,
"HomepageFile": "player.html",
"AdditionalRoutes": {},
"EnableWebserver": true,
"MatchmakerAddress": "localhost",
"MatchmakerPort": 9999,
"PublicIp": "localhost",
"HttpPort": 80,
"HttpsPort": 443,
"StreamerPort": 8888,
"SFUPort": 8889,
"MaxPlayerCount": -1
}
12:15:00.487 No peerConnectionConfig
12:15:00.493 Running Cirrus - The Pixel Streaming reference implementation signalling server for Unreal Engine 5.1.
12:15:00.504 WebSocket listening for Streamer connections on :8888
12:15:00.505 WebSocket listening for SFU connections on :8889
12:15:00.506 WebSocket listening for Players connections on :80
12:15:00.517 Http listening on *: 80
12:15:00.519 Cirrus connected to Matchmaker localhost:9999
SS2 也是如此
媒人日志
12:47:10.361 HTTP listening on *:90
12:47:10.361 Matchmaker listening on *:9999
12:47:16.927 Message TYPE: connect
12:47:16.927 Adding connection for localhost with playerConnected: false
12:47:26.110 WARNING: No empty Cirrus servers are available
12:47:29.300 WARNING: No empty Cirrus servers are available
12:47:32.379 WARNING: No empty Cirrus servers are available
12:47:35.459 WARNING: No empty Cirrus servers are available
12:47:38.536 WARNING: No empty Cirrus servers are available
12:47:46.933 Message TYPE: ping
12:48:16.940 Message TYPE: ping
警告是当我转到 localhost:90(Matchmaker 端口)时,而 ping 是当我转到信令 Web 服务器的单个端口(即 localhost:80)时
而且这是localhost:90的网页
没有错误,手动访问信令 Web 服务器可以工作,但匹配不行。我已经花了两天时间试图解决这个问题,如果可以的话请帮助我!我将非常感激
您的第二个信令服务器似乎没有连接到 Matchmaker 服务器,否则在 Matchmaker 日志上您将看到另一组此日志:
12:47:16.927 Message TYPE: connect
12:47:16.927 Adding connection for localhost with playerConnected: false
您提到“SS2 也是如此”,请再次检查是否表明 SS2 确实连接到了 Matchmaker 服务器。
不要忘记还启动 2 个 UE 应用程序实例,每个实例都带有
-PixelStreamingPort=8888
,另一个实例带有 -PixelStreamingPort=8887
。