mvc框架利用WebSockets怎么实现在线棋牌游戏后台数据交互?

时光守护者 2017-07-12 11:56:08
我用Canvas做了个斗地主游戏,
每个人用帐号登录(很多人登录加入1000人)
匹配房间号(3个人一个房间)
我怎么在这个房间里 后台相互交换每个用户数据(要求速度一定要快 怎么在内存中交换 保存在Session是否可行?可能12千人同时游戏会不会内存爆掉)

在就是后台怎么快速找到同一房间中的三个人
这个后台该怎么设计

服务器与客户端用的是WebSockets 长连接 webApi 接口 性能要求性能要快!

帮帮小弟第一次研究这个!有没有什么好的想法 和解决方案啊?
...全文
1838 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
人鱼传说 2017-07-14
  • 打赏
  • 举报
回复
正如楼上所说,若是b/s应用,用 WebSocket应用,若是c/s应用就用Socket,这两个都是长连的,基于事件的数据实时发送与接收,1万+在线人数不算多,但开一万+的Socket连接我就没试过,不知会不会超出网卡限制(这个先不管)先说说b/s nodejs server端的代码,供参考;


/*全部玩家 玩家ID:player1,player12... */
players=
	{
		'player1':{name:'张三',room:'room_1',data:{}},
		'player2':{name:'李四',room:'room_1',data:{}},
		'player3':{name:'李四',room:'room_1',data:{}},
		'player7':{name:'lee',room:'room_1',data:{}},
		'player8':{name:'k@$rr',room:'room_1',data:{}},
		'player12':{name:'!!',room:'room_1',data:{}},
	},
/*全部房间 房间ID:room_1,room_2*/	
rooms=
	{
		'room_1':['player1','player2','player3'],'room_2':['player7','player8','player12']
	}

/*通过房间ID找全部玩家ID*/
function getPlayersFromRoom(roomid)	{
	return rooms[roomid];
}

function getOtherPlayers(roomid,playerid){
	var _playerids=getPlayersFromRoom(roomid);
	var _otherPlayers={};
	for(var i=0;i<_playerids.length;i++){
		if (_playerids[i]!=playerid){
			_otherPlayers[_playerids[i]]=players[_playerids[i]];	
		}		
	}
	return _otherPlayers;
}

/*写玩家数据*/
function setPlayerData(roomid,playerid,data){
	players[playerid].data=data;
	//修改完数据后广播房间内其他玩家	
	var sendData=getOtherPlayers(playerid);
	io.sockets.emit(roomid+'_Players',sendData);
}
时光守护者 2017-07-12
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
贴出你的详细设计,源代码来问。

我服务器还没有设计那!
我以前只做过一对一以的 用户之间不需要交换数据

就像这个斗地主 客户端有服务器使用长连接协议WebSockets 完成
最关键的是:这三人要不停交换数据,玩家1 、 出个什么牌 、 其他玩家要不要 、 这三个人数据始终在交换
我就想知道这个后台应该怎么设计数据交互这块 ,速度要快 不可能平凡读写数据库把!而且还得是同一个桌的!!!
大哥如果你设计这个游戏的后台,你应该怎么设计合理?你经验比较丰富, 教教我们好把!
  • 打赏
  • 举报
回复
贴出你的详细设计,源代码来问。
xdashewan 2017-07-12
  • 打赏
  • 举报
回复
这个斗地主显然是客户端应用,是c/s而不是b/s,而WebSocket应用于b/s,所以如果你是客户端,那么直接用Socket而不是WebSocket

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧