Hi - i've been experimenting with Colyseus for a while, but when I have three tabs open, and close one, and then reopen it and rejoin, the other tabs are claiming that the SessionId is undefined. Is there something wrong with my code? I tried setting a property on the state called uuid which is basically the sessionid, but it still didn't work. Players is an empty array.
Add player function (im using paperjs):
function addPlayer(nickname,position,color,uid) {
console.log("player added as",uid)
var circle = new Path.Circle(position,20)
circle.fillColor = color
console.log(nickname + " has joined the server")
players[uid] = {
circle: circle,
nickname: nickname
}
console.log(players[uid])
}
State watching function thing:
addlog("joined succesfully!")
console.log(room)
room.onMessage(function(msg) {
addlog(msg)
})
room.state.players.onChange = function(plr,sesh) {
// it exists and it's not us
if(players[plr.uuid] && plr.uuid != room.sessionId && plr.uuid) {
// players[sesh].circle.position.x = plr.x
// players[sesh].circle.position.y = plr.y
var thepoint = new Point(plr.x,plr.y)
var tween = players[plr.uuid].circle.tweenTo(
{ position: thepoint},
{ duration: 100, start: false, easing: "linear"}
);
tween.start();
console.log("started tween for",players[plr.uuid].nickname)
}else{
console.log("errorrorr")
console.log(players[plr.uuid], room.sessionId, sesh)
}
}
room.state.players.onAdd = function(plr,session) {
if(plr.uuid == undefined) {
alert("sessionid undefined")
}
console.log("user is being added!")
if(plr.uuid != room.sessionId) {
addPlayer(plr.nickname,new Point(plr.x,plr.y),plr.color,plr.uuid)
console.log(plr,plr.uuid)
addlog(players[plr.uuid].nickname + " joined!")
}
}
room.state.players.onRemove = function(plr,session) {
console.log("user is being removed!")
if(players[plr.uuid] && plr.uuid) {
players[plr.uuid].circle.remove()
addlog(players[plr.uuid].nickname + " left.")
players[plr.uuid] = undefined
}
}
I'm really confused about why this is happening... any ideas?