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
Yorum Gönder