+ this.$set(this.people, my.sid, {id:my.id, name:my.name});
+ this.gameRef.id = this.$route.params["id"];
+ this.gameRef.rid = this.$route.query["rid"]; //may be undefined
+ // Initialize connection
+ this.connexionString = params.socketUrl +
+ "/?sid=" + this.st.user.sid +
+ "&tmpId=" + getRandString() +
+ "&page=" + encodeURIComponent(this.$route.path);
+ this.conn = new WebSocket(this.connexionString);
+ this.conn.onmessage = this.socketMessageListener;
+ this.conn.onclose = this.socketCloseListener;
+ // Socket init required before loading remote game:
+ const socketInit = (callback) => {
+ if (!!this.conn && this.conn.readyState == 1) //1 == OPEN state
+ callback();
+ else //socket not ready yet (initial loading)
+ {
+ // NOTE: it's important to call callback without arguments,
+ // otherwise first arg is Websocket object and loadGame fails.
+ this.conn.onopen = () => { return callback() };
+ }
+ };
+ if (!this.gameRef.rid) //game stored locally or on server
+ this.loadGame(null, () => socketInit(this.roomInit));
+ else //game stored remotely: need socket to retrieve it