【发布时间】:2023-04-06 02:37:01
【问题描述】:
我正在尝试在node.js + socket.io + mysql上做一个小游戏。
node.js 服务器读取有关字段及其上的项目的数据库信息(40x40)。它会自行保存这些信息,并根据要求提供。
问题是,如果你只是发送一个请求,信息就会来。但是,如果您在收到此信息后尝试对其进行处理,例如将扇区和对象放在数组中,则请求不起作用。我试图在函数之前设置一个超时,以便有时间获取信息;我试图把它放在一个按钮上。没有帮助。阻止一切的代码位于client.html 中,位于/* 和*/ 之间。没有这段代码也很好用。
-
server.js:var mysql = require('mysql'); var io = require('socket.io').listen(8080); var TESTGAME = 'testgame'; var TABLES_MAP1 = 'map1'; var client = mysql.createClient({ user: 'root', password: '', }); client.query('USE '+TESTGAME); client.query( ('SELECT * FROM '+TABLES_MAP1+' WHERE id_sector_x < 40 && id_sector_y < 40'), function(err, results, fields) { if (err) {throw err;} Map1 = (results); io.sockets.on('connection', function (socket) { socket.emit('info', Map1); socket.on('back', function (data) { console.log(data); }); }); client.end(); } ); -
client.html:<!doctype html> <html> <head> <meta charset="utf-8"> <title>Map</title> <script src="http://127.0.0.1:8080/socket.io/socket.io.js"></script> <script src="json.js" type="text/javascript"></script> <script type='text/javascript'> window.onload = function() { var socket = io.connect('http://127.0.0.1:8080'); socket.on('info', function (data) { Mappp = (data); socket.emit('back', Mappp.length); }); }; Map1=Mappp; function mapp(){ m=0; //As info looks like this [1600] i need to make it look like this [40][40]. So this m will be m++ on each iteration to know what info should be put in. for (x=0;x<40;x++){ for (y=0;y<40;y++){ /* switch (Map1[m].type_sector) { case "grass": map[x][y]=0; [break] case "water": map[x][y]=1; [break] case "swamp": map[x][y]=2; [break] default: map[x][y]=0; [break] }; switch (Map1[m].obj_sector) { case "no": objectMap[x][y]=0; [break] case "wall": objectMap[x][y]=1; [break] default: objectMap[x][y]=0; [break] }; */ m++; } } window.alert('Done'); } setTimeout(mapp, 1000); </script> <form name=""> <input type="submit" value="call mapp" onclick=mapp()> </form> </head> <body> <script type="text/javascript"> </script> </body> </html>
对不起我的英语:)
【问题讨论】:
标签: javascript node.js socket.io