Today I saw the following happen:
client A is logged in.
client B logs in and joins a room.
When B joins the room A is notified via an ADD_OCCUPANT event.
I then do this:
- Code: Select all
function addOccupantListener(e) // e is a RoomEvent
{
addToRoom(e);
... other code
}
function addToRoom(e)
{
var r = e.target.getSimpleRoomID();
var rr = e.target.getRoomID();
var id = e.getClientID();
var c = e.getClient();
var name = getPlayerName(c);
... other code
}
function getPlayerName(cl)
{
var name=cl.getAttribute("playername");
return name;
}
The problem is:
what is returned in (seemingly rare) cases is: instead of client B's player name, it's client A's own name
(or perhaps some other one -- I only observed this when I myself was client A).
From the server logs, I see that client B's name is set correctly,
and the client attributes included with the u36 message are all in good order.
And in fact all the other client attributes were handled correctly without this mixup.
From that point on, wherever clent B's name should have appeared, it had client A's name.
Logging out and logging back in did not change the situation,
but logging out, refreshing the page, logging back in did.
I don't see where my code can go wrong here ... it surely works 'almost' all the time -
and I'm hoping someone can give me some clues ...
Since this only happens rarely, and appears to be a
client-side bug (either in Union or in my code) it will be very hard to gather
evidence. HELLLLLLLLLLPPPP !
This seems similar to a reproducible problem I posted on another thread:
viewtopic.php?f=3&t=365