def join(self, realm, authmethods=None, authid=None, authrole=None, authextra=None):
        # FIXME
        if six.PY2 and type(realm) == str:
            realm = six.u(realm)
        if six.PY2 and type(authid) == str:
            authid = six.u(authid)
        if six.PY2 and type(authrole) == str:
            authrole = six.u(authrole)

        if self._session_id:
            raise Exception("already joined")

        # store the realm requested by client, though this might be overwritten later,
        # when realm redirection kicks in
        self._realm = realm

        # closing handshake state
        self._goodbye_sent = False

        # send HELLO message to router
        msg = message.Hello(realm, role.DEFAULT_CLIENT_ROLES, authmethods, authid, authrole, authextra)
        self._transport.send(msg)
Implements :func:`autobahn.wamp.interfaces.ISession.join`
dataset/ETHPy150Open crossbario/autobahn-python/autobahn/wamp/protocol.py/ApplicationSession.join