2012-05-26 4 views
0

Ici, j'ai un code pour la somme 3 numéros i + j + k mais je veux savoir comment configurer le fichier serveur pour travailler avec la fonction setTimeout ... y a-t-il une restriction?setTimeout dans node.js - javascript

donc, voici mycode:

index.jade

!!! 5 
html 
    head 
    title Test 
    body 
    form(name='form1', method='post', action='') 
     label(for='1') 
     input#1(type='text', name='1') 
     label(for='2') 
     input#2(type='text', name='2') 
     label(for='3') 
     input#3(type='text', name='3') 
     input(name='submit', type='button', value='submit') 
    span #{result} 

app.js

var express = require('express'); 
     app = express.createServer(); 

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.set("view options", { layout: false }); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 
app.use(express.bodyParser()); 
    app.get('/', function(req, res){ 
     var result; 
    res.render('index', {result: ''}); 
}); 


    app.post('/', function(req, res){ 
     var i = req.param('1', 0); 
     i = parseInt(i); 
     var j = req.param('2', 0); 
      j = parseInt(j); 

     var k = req.param('3', 0); 
     k = parseInt(k); 

     var r = i+j+k; 
     res.render('index', {result:r}); 

    }); 
app.listen(3010); 

Comment etc. pour bloquer l'action de l'utilisateur (clic, double clic, clic droit) et de spectacle lui une div avec le texte "Vous pouvez faire n'importe quelle action" dans les 5 premières secondes et après que l'utilisateur peut faire l'action mais après 60 secondes encore ne peut faire aucune action ... Est-ce que je peux faire avec la fonction setTimout ou COMMENT?

désolé pour mon anglais

+0

que facile avec javascript sur clientide mais j'ai besoin de avec l'utilisateur de contrôle de serveur ainsi j'ai besoin d'écrire cette fonction sur le dossier de serveurside app.js, puis-je utiliser setTimeot ou ??? –

+0

'click',' doubleclick', 'rightclick' et de tels événements se produisent uniquement du côté client. Le côté serveur reçoit des événements comme une nouvelle demande entrante. Bien que vous puissiez utiliser 'setTimeout' côté serveur, cela ne change rien à rien. – Esailija

+0

ok, mais est une bonne solution pour montrer que je div qui couvrira tous les écrans 5 et puis dissiper ... donc css je vais avoir une largeur: 100%, hauteur: 100% et comment je peux changer la visibilité à temps, etc après 5s ... alors quand 5s plus je change de visibilité: visible ... ou caché après un certain temps ??? –

Répondre

1

Vous ne pouvez pas le faire sur le côté serveur. Vous devez insérer un javascript côté client qui bloque l'interaction et le débloque à nouveau après 5 sec.

Le code pour ce faire sur le côté client serait quelque chose comme ceci:

// this code should be executed when the client receives a message from the server. 
var overlay = document.getElementById("your-element-id"); 
overlay.style.visibility = "visible"; 

window.setTimeout(function() { 
    overlay.style.visibility = "hidden"; 
}, 5000); 

Vous devez prendre les mesures suivantes pour obtenir ce que vous voulez:
1. L'utilisateur charge la page.
2. L'utilisateur reçoit un message du serveur, indiquant qu'il est synchronisé
3. Ensuite, soit après un certain temps ou après un autre message du serveur vous débloquez l'utilisateur
4. Enfin, vous démarrez le jeu

+0

ok, mais est une bonne solution pour montrer que je div qui couvrira tous les écrans 5 et puis dissaper ... donc css je vais avoir une largeur: 100%, hauteur: 100% et comment je peux changer la visibilité à temps, etc après 5s ... alors quand 5s plus je change de visibilité: visible ... ou caché après un certain temps ??? –

+0

et est-ce une bonne solution? –

+0

Pourquoi voulez-vous bloquer l'interaction de l'utilisateur pendant 5 secondes? Ensuite, je peux vous dire si c'est une bonne solution. – chucktator