i'm creating multiplayer card game. i want make a private table (room) , but when i'm connecting to server it all connect to same room.
my code:
public string serverName = "localhost";
public string port = "3553";
public string roomName = "chat";
public IEnumerator Start()
{
String uri = "ws://" + serverName + ":" + port;
Debug.Log(uri);
client = new Client(uri);
client.OnOpen += OnOpenHandler;
client.OnClose += (object sender, EventArgs e) => Debug.Log("CONNECTION CLOSED");
Debug.Log("Let's connect the client!");
yield return StartCoroutine(client.Connect());
room = client.Join(roomName);
}
public void Join()//button event
{
StartCoroutine(ConnectToRoom(rname.text));
rname.text = "";
}
public void Create()//button event
{
StartCoroutine(ConnectToRoom(rname.text));
rname.text = "";
}
IEnumerator ConnectToRoom(String Room_Name)
{
Debug.Log("Let's join the room!");
//if Client Dose not Set room name;
if (Room_Name.Equals(""))
{
Room_Name = "NO ROOM NAME";
}
//Client Connect to Existing room
if (!isExistingRoom)
{
room = client.Join(roomName, new Dictionary<string, object>()
{
{ "create", true },
{ "name", Room_Name }
});
}
else
{
room = client.Join(Room_Name);
isExistingRoom = false;
}
room.OnReadyToConnect += (sender, e) =>
{
Debug.Log("Ready to connect to room!");
StartCoroutine(room.Connect());
};
room.OnJoin += OnRoomJoined;
room.OnStateChange += OnStateChangeHandler;
room.Listen("players/:id", this.OnPlayerChange);//players array
room.Listen("players/:id/:axis", this.OnPlayerMove);//x and y coridinates
room.Listen("messages/:number", this.OnMessageAdded);//message array
room.Listen(this.OnChangeFallback);
room.OnMessage += OnMessage;
while (true)
{
client.Recv();
yield return 0;
}
}