游戏链接:http://game.wanlitong.com/?act=game_daxiaowang
一 socket通讯
1 游戏使用js原生开发。通讯使用socket.io。
2 游戏html页面定义通讯地址和token
// socket 连接的地址 GM.socketIoUrl_RJ = "https://activity.games.1768.com/"; GM.token_RJ = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiI3MjU5Njc1NiIsImV4cCI6MTQ5NDczMTg1N30.DuoBBaJeQBRpsLnYaTWEXLb1tgMAyCXh9yHgb4BkL9E"; GM.gameType = "1"; // 判断是否 需要添加socket处理游戏 // 是否需要socket 支持 GM.needAddSocket = GM.userLogged && GM.gameType === ‘1‘;
3 游戏通用js文件
http://h2.jkimg.net/game/js/v2/common-game.js?v=201704121801
连接socket
init:function(){ // 连接至游戏服务器 try{ this._socket = window.io.connect(GM.socketIoUrl_RJ); this._router() .emit({ cmd: ‘act::init‘ }); }catch(e){ GM.log(‘socket connect error‘); } return this; }
发送数据
// 发送命令 emit: function(data){ data = data || {}; var dataDefault ={ params:{ gameId: GM.gameId, token: GM.token_RJ } } $.extend(true, data, dataDefault); //深度拷贝,将data和dataDefault合并 data = JSON.stringify(data); GM.log(‘推送:‘+ data); this._socket.emit( ‘router‘, Base64.encode(data) ); return this; }
数据格式JSON, 协议{gameId, token, 其他数据, ...},将json转成字符串,然后用Base64加密后发送
接收数据
//接收命令 _router:function(){ var self = this; // 通过 router 模块,监听服务器返回的数据 self._socket.on(‘router‘, function(data) { data = Base64.decode(data); GM.log(‘接收:‘+ data); GM.log(‘‘); data = JSON.parse(data); var cmd = data.cmd; var res = data.res; switch(cmd){ case ‘act::init‘: self._hanleData(res); break; default: break; } }) .on(‘connect_error‘, function(data){ GM.log(‘connect_error‘); }); return this; }
将data字符串用Base64解密,再还原成JSON,根据cmd将数据返回数据res分发处理。
时间: 2024-10-01 01:31:45