• Categories
  • Recent
  • Tags
  • Popular
  • Solved
  • Unsolved
  • Users
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Darkly)
  • No Skin
Collapse
brainCloud Forums

Reconnect to room on a Relay Server

Scheduled Pinned Locked Moved Unsolved General
30 Posts 3 Posters 2.7k Views
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Paul WinterhalderP Offline
    Paul WinterhalderP Offline
    Paul Winterhalder brainCloudAdmin
    wrote on last edited by
    #3

    Also Alessio,

    Can we get some more details on your use case - especially in terms of lobby configuration?

    i.e. The relay server behaviour for disconnecting users is different depending on your lobby type... i.e. if it's a long-running lobby (i.e. "Disband on start" is false) the relay server sends a SYS_MEMBER_LEFT call to the api server... if it's not, we don't send that call.

    More details will help us to better determine what may be happening for you.

    Paul.

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #4

    Hello Paul,
    this is my scenario:

    • player A and player B enter the lobby
    • the lobby is set to READY and the ROOM_ASSIGNED and ROOM_READY events arrive
    • both players enter the ROOM and then start playing
    • in the meantime the lobby is DISBANDED ("Disband on start" is true)
    • player B disconnects for network reasons, player A receives the notification that the opponent has disconnected
    • player B tries to connect again to the room where player A is still present, but receives the error:
      {"status":403,"reason_code":90300,"status_message":"Relay: Disconnected by server","severity":"ERROR"}. Player B uses the same access data received from ROOM_ASSIGNED (host, port, passcode)

    We are using Unity and the client version of BC is 5.0.0.

    Another question: is one server instantiated per ROOM, or can a single server host multiple ROOMs?

    Thanks!

    Alessio

    1 Reply Last reply
    0
  • Paul WinterhalderP Offline
    Paul WinterhalderP Offline
    Paul Winterhalder brainCloudAdmin
    wrote on last edited by
    #5

    Hi Alessio,

    Thanks for the use case clarification - our folks are attempting to replicate the scenario. Certainly the intention is that that reconnect should work - the Relay Server should have the initial collection of members from the lobby cached.

    Question - how are you disconnecting "Player B" for network reasons? Would it involve them re-authenticating - and thus getting a new brainCloud session? (If so - that changes the id we call their "cx" - which combines their profileId:sessionId - and is likely the reason the reconnect is failing).

    If they were to reconnect without re-authenticating - it would probably work...

    (Note - we haven't confirmed that yet - but it's our working theory.)

    And to answer your question - yes, a server can host multiple rooms. It is controlled via the "Containers Per Server" property when defining the server on the My Servers page.

    Paul.

    1 Reply Last reply
    0
  • Greg MouldsG Offline
    Greg MouldsG Offline
    Greg Moulds brainCloudAdmin
    wrote on last edited by
    #6

    Also Alessio, can you confirm whether your lobby type has the "Allow join in progress" Rule enabled or disabled? That's also relevant. Thanks!

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #7

    Hi Paul & Greg,

    1. player B re-authenticates, so I assume that his "cx" changes. Is it possible to ensure that the player can re-enter the room even by re-authenticating? If you have a unique passcode, could you use that?

    2. "Allow join in progress" is true

    Regarding the number of rooms, so in practice you can have a maximum of 2500 simultaneous rooms (50 "Max servers" x 50 "Containers per Server"), right?

    Thank you!

    1 Reply Last reply
    0
  • Paul WinterhalderP Offline
    Paul WinterhalderP Offline
    Paul Winterhalder brainCloudAdmin
    wrote on last edited by Paul Winterhalder
    #8

    Hi Alessio,

    I think we've identified your test app and lobby. We believe that both

    Disband at Start

    Allow join in progress

    are enabled for that lobby. Unfortunately - they shouldn't be - this is a regression in Portal-X - it should be disallowing that combo.

    So what we believe is happening is player B is re-authenticating before attempting to re-connect.

    Because Player B now has a new session, he/she also has a new connection id (i.e. cx) - and the Relay Server seems them as a new person.

    Because "Allow Join in Progress" is enabled - the Relay Server attempts to contact the lobby to see if this user is valid - but that lobby doesn't exist anymore - and we get the error you are seeing... (which is maybe not the best error message).

    Disabling "Allow join in progress" will result in a more understandable error message - but probably won't fix the problem.

    The real trick to this scenario would be for the network re-connect to the room server to happen without recreating the CX - but depending upon the type of network failure that is probably unavoidable.

    The devs are looking into options.

    Paul.

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #9

    Thanks Paul, I really appreciate it.
    Bear in mind that the player could also disconnect due to a crash or the mobile device being turned off, so the possibility of re-entering the room even after having performed a new authentication would be very very important.

    Please let me know!

    Alessio

    1 Reply Last reply
    0
  • Paul WinterhalderP Offline
    Paul WinterhalderP Offline
    Paul Winterhalder brainCloudAdmin
    wrote on last edited by
    #10

    Also Alessio,

    Agreed with your scenario - we are prioritizing a improvement to deal with that scenario for you.

    Also that maximum # of servers is a limit that we can control per-app - so we can bump that up.

    Paul.

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #11

    Hi @Paul-Winterhalder, any chance to have new developments regarding reconnection in the room?

    1 Reply Last reply
    0
  • Paul WinterhalderP Offline
    Paul WinterhalderP Offline
    Paul Winterhalder brainCloudAdmin
    wrote on last edited by
    #12

    Hi @Alessio-Falsetti - checking with the devs.

    I believe we have a short-term Relay Server patch that makes reconnecting generally more reliable -- but also a change for 5.2 that can allow reconnecting across sessions... (that will be an option for the dev to enable).

    5.2 is currently targeting mid-to-late February for release.

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #13

    Great! Happy to hear that!

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #14

    Ciao @Paul-Winterhalder, @Greg-Moulds,
    I have updated BC to 5.2, so I can implement the rejoin in the room. But it's not clear to me how to implement it. The only information I found is in the release notes where it only says this:

    Reconnects - Relay Servers now better handling reconnect scenarios. There is also an option to allow reconnects even if the user’s session has changed ("ALLOW_REJOIN_BY_PROFILE_ID": "true").

    How does it work?

    Thanks!

    1 Reply Last reply
    0
  • Greg MouldsG Offline
    Greg MouldsG Offline
    Greg Moulds brainCloudAdmin
    wrote on last edited by
    #15

    Hey @Alessio-Falsetti . In order to enable that feature, you need to update the "Custom Environment" settings for the appropriate "My Servers" definition:

    image.png

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #16

    Hi @Greg-Moulds ,
    ok, I've updated the custom environment of my server, and now? If I try to rejoin the room, I receive alway this error:
    "status":403,"reason_code":90300,"status_message":"Server Closed Connection","severity":"ERROR"}.

    I'm using:
    RelayService.Connect(RelayConnectionType.TCP, connectionOptions, null, failureCallback);

    What should I do?
    Thanks!

    1 Reply Last reply
    0
  • Greg MouldsG Offline
    Greg MouldsG Offline
    Greg Moulds brainCloudAdmin
    wrote on last edited by
    #17

    Hmm... πŸ€” Let me poke around.

    1 Reply Last reply
    0
  • Greg MouldsG Offline
    Greg MouldsG Offline
    Greg Moulds brainCloudAdmin
    wrote on last edited by
    #18

    So a question for you... are you able to connect initially and it's failing on the reconnect? Or are you failing to connect at all?

    1 Reply Last reply
    0
  • Greg MouldsG Offline
    Greg MouldsG Offline
    Greg Moulds brainCloudAdmin
    wrote on last edited by
    #19

    I'm assuming from your statement "if I try to rejoin the room" that you've connected successfully initially.

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #20

    Yes, works well first time.

    1 Reply Last reply
    0
  • A Offline
    A Offline
    Alessio Falsetti
    wrote on last edited by
    #21

    However, reconnection doesn't work.

    1 Reply Last reply
    0
  • Greg MouldsG Offline
    Greg MouldsG Offline
    Greg Moulds brainCloudAdmin
    wrote on last edited by
    #22

    Ok thanks @Alessio-Falsetti . We're still looking into it so I'll let you know when we have an update.

    1 Reply Last reply
    0

  • Login

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Solved
  • Unsolved
  • Users