您好, 请问没用proxy的时候一切正常吗?
Group Details Private
Global Moderators
Forum wide moderators
Member List
Hi, bralz.
- No, unless you modify the source yourself.
- Yes, Colyseus can be used for turn-based games. ex: https://github.com/colyseus/cocos-demo-tictactoe
- Yes, there's a buildin room "Lobby": https://docs.colyseus.io/colyseus/builtin-rooms/lobby/
- You need to implement it yourself.
- No such an out of box feature. You need to implement it yourself.
@chaimae
Hi,
reference:
- https://docs.colyseus.io/colyseus/client/client/#reconnect-roomid-string-sessionid-string
Usage - Colyseus & Arena Cloud Documentation
Documentation for Colyseus Multiplayer Framework for Node.js - https://docs.colyseus.io/colyseus/server/room/#allowreconnection-client-seconds
Room - Colyseus & Arena Cloud Documentation
Documentation for Colyseus Multiplayer Framework for Node.js - https://github.com/colyseus/colyseus-unity3d/blob/master/Server/src/rooms/MyRoom.ts
GitHub
colyseus-unity-sdk/MyRoom.ts at master · colyseus/colyseus-unity-sdk
server:
async onLeave (client: Client, consented: boolean) {
// flag client as inactive for other users
this.state.players.get(client.sessionId).connected = false;
try {
if (consented) {
throw new Error("consented leave");
}
// allow disconnected client to reconnect into this room until 20 seconds
await this.allowReconnection(client, 20);
// client returned! let's re-activate it.
this.state.players.get(client.sessionId).connected = true;
} catch (e) {
// 20 seconds expired. let's remove the client.
this.state.players.delete(client.sessionId);
}
}
client:
private void OnLeaveRoom(int code)
{
WebSocketCloseCode parsedCode = WebSocketHelpers.ParseCloseCodeEnum(code);
LSLog.Log(string.Format("ROOM: ON LEAVE =- Reason: {0} ({1})", parsedCode, code));
_pingThread.Abort();
_pingThread = null;
_room = null;
if (parsedCode != WebSocketCloseCode.Normal && !string.IsNullOrEmpty(_lastRoomId))
{
JoinRoomId(_lastRoomId,null);
}
}
- 远程载入压力测试
npx colyseus-loadtest --endpoint wss://your-server-domain --room my_room --numClients 100 loadtest/example.ts
It looks like connection timeout caused by lots of clients at the same time. I'm asking the team what should we do if this happens.
If the number of clients is big enough, timeout errors will happen sooner or later. Try to increase the timeout value or catch errors by your code.
The server should serve how many clients at the same time is depend on your game design.
Ther sever can serve how many clients at the same time is depend on the soft and hardware.
I don't think you need to transfer positions of all sections of a snake -- they can be computed by both server and client side.
OK, so I got a message about 7 Bytes per frame, that's pretty good I think.
I'll share my test project for you and others who are insterested about it here:
https://github.com/CocosGames/bandwidth_test_colyseus_defold/tree/main/test
Cheers.