pomelo捡宝项目学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/themagickeyjianan/article/details/88748557

背景: 捡宝项目是属于服务器同步计算客户端位置,玩家在场景服务器进行请求,服务器计算,广播给玩家

1)场景服务器area

area/handler-->playerHandler.js

玩家进入场景: 

PlayerHandler.prototype.enterScene = function (msg, session, next) 

玩家请求移动

PlayerHandler.prototype.move = function (msg, session, next) {   // 客户端在地图中朝着目标移动

玩家请求获取当前任务角色的动画信息

PlayerHandler.prototype.getAnimation = function (msg, session, next) {  

area/remote-->playerRemote.js

还是那句话,remote里面的东西是给前端服务器远程调用使用的,如这里玩家进入场景后,被迫掉线,那么就需要清理玩家在场景中的状态信息

玩家离开场景服务器

PlayerRemote.prototype.playerLeave = function(args, cb) {
	var areaId = args.areaId;     // 哪个玩家离开哪个地图根据id标识
	var playerId = args.playerId; 
	var player = this.areaService.getPlayer(playerId);

	if (!player) {
		this.utils.invokeCallback(cb);
		return;
	}

	this.areaService.removePlayer(playerId);     // 离开后进行清理
	this.areaService.getChannel().pushMessage({
		route: 'onUserLeave',
		code: this.consts.MESSAGE.RES,
		playerId: playerId
	});

	this.utils.invokeCallback(cb);
};

思考: 这个this.areaService是如何被注册的呢?

多台area场景服务器,不用区分到底在那台服务器就直接删除了吗?

bearcat这个库如何管理数据的?

2)connector服务器

这个已经多次分析过了,因为它监听的是客户端连接,那么自然之道玩家在线离线状态,然后离线时,就通知场景服务器进行处理。

猜你喜欢

转载自blog.csdn.net/themagickeyjianan/article/details/88748557