and some example from nodejs side: 


import {SocketConnectionInfo} from '../socket_connection_info.js';

export function on_login(soinfo, socket, games, rdbs, io) { return (data) => {

  var r = SocketConnectionInfo.construct_from_db(data.user_id, data.game_version, games);
  var res;
  if (r && r?.is_creator) { // the reconnection attempt as a game creator, join to the game channel
    soinfo.user_id = r.user_id;
    soinfo.game_id = r.game_id;
    soinfo.game_version = r.game_version;
    soinfo.is_creator = r.is_creator;
    soinfo.score = r.score;
    soinfo.ts = Date.now();
    soinfo.update_db(games);
    if (r?.game_id != undefined) socket.join(r.game_id);
    if (r?.user_id != undefined) socket.join(r.user_id);
      //tbd
  } else  if (r && r?.is_creator == false) {// the reconnection attempt as a game client, join to the game channel
    soinfo.user_id = r.user_id
    soinfo.game_id = r.game_id
    soinfo.game_version = r.game_version;
    soinfo.is_creator = r.is_creator;
    soinfo.score = r.score;
    soinfo.ts = Date.now()
    soinfo.update_db(games)
    if (r?.game_id != undefined) socket.join(r.game_id)
    if (r?.user_id != undefined) socket.join(r.user_id)
      //tbd
  } else {

    socket.join(data.user_id);

     var r = rdbs.post("/createuser", {
      username: data.user_id, game_version: data.game_version, score:0
     },
      {
      validateStatus: function (status) {
        return status == 200;
      },
    }
    ).then(function (response) {

        //console.log(response)
        // handle success
        res = response;

        //result": "success",
       var resdata = response.data;

        if(resdata.result == "success"){

          soinfo.is_creator = data.is_creator;
          soinfo.user_id = data.user_id;
          soinfo.game_version = data.game_version;
          soinfo.score = data.score;
          soinfo.ts = Date.now();
          soinfo.save_to_db(games);

          //this.socket.join(`login---${data.user_id}`)
            socket.emit('user_created', {game_version: data.game_version, user_id: data.user_id});

         

        } else {

          socket.join(data.user_id);

          throw response.data.result;
          //throw some error here to be processed by catch

        }

      })
      .catch(function (error) {
        try {
          socket.emit('error_in_create_user',
            {response: res?.data,
              context: "on_creatuse_user"
            });
        }
        catch( e) {
            console.log(e)
        }
   
        finally {
            console.log(error);
        }
  })
  }
}}

Yorumlar

Bu blogdaki popüler yayınlar

disgusting terrsts of foreign gypsies foreign terrorst grp/cult