【问题标题】:setTimeout in node.js - javascriptnode.js 中的 setTimeout - javascript
【发布时间】:2012-05-26 14:52:13
【问题描述】:

这里我有 3 个数字 i+j+k 的代码,但我想知道如何配置服务器文件以使用 setTimeout 函数...有什么限制吗?

所以,这是我的代码:

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);

如何阻止用户操作(单击、双击、右键单击)并在前 5 秒内向他显示带有文本“您可以执行任何操作”的 div,之后用户可以执行操作,但 60 秒后又不能执行任何操作...我可以使用 setTimout 函数或如何执行此操作吗???

对不起我的英语

【问题讨论】:

  • 在客户端使用 javascript 很容易,但我需要使用服务器控制用户,所以我需要在服务器端文件 app.js 上编写该函数,我可以使用 setTimeot 还是???
  • click, doubleclick, rightclick 等事件只发生在客户端。服务器端获取事件,例如新的传入请求。虽然您可以在服务器端使用setTimeout,但这并没有真正改变任何事情。
  • 好的,但这是一个很好的解决方案,可以向我展示一些将覆盖所有屏幕 5s 然后分散的 div ......所以在 css 上,我将有一个宽度:100%、高度:100% 和如何我可以在 5 秒后按时更改可见性等...所以当 5 秒过后我会更改可见性:可见 ... 或在一段时间后隐藏???
  • 当我用 DIV 100% 覆盖屏幕时,用户无法执行任何操作? :)
  • 是的,他们可以(有一定的计算机知识),但如果距离上次请求不到 60 秒,您可以简单地拒绝在服务器端提供服务...

标签: javascript node.js express settimeout pug


【解决方案1】:

您不能在服务器端执行此操作。您必须插入阻止交互并在 5 秒后再次解除阻止的客户端 javascript。

在客户端执行此操作的代码如下所示:

// 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);

您应该采取以下步骤来实现您想要的:
1. 用户加载页面。
2.用户收到服务器发来的消息,说明他正在同步
3. 然后在指定时间后或从服务器发送另一条消息后,您解除对用户的阻止
4. 终于开始游戏了

【讨论】:

  • 好的,但这是一个很好的解决方案,可以向我展示一些将覆盖所有屏幕 5s 然后分散的 div ......所以在 css 上,我将有一个宽度:100%、高度:100% 和如何我可以在 5 秒后按时更改可见性等...所以当 5 秒过后我会更改可见性:可见 ... 或在一段时间后隐藏???
  • 为什么要阻止用户交互 5 秒?然后我可以告诉你这是否是一个好的解决方案。
  • 因为我正在尝试创建一些实时应用程序,所以我需要用户之间的完美同步,以便所有用户都能获得 div100% 可见性:同时可见
  • 我试图创建类似简单游戏实时多人游戏的东西,我需要知道最好使用我想要的服务器端代码,或者只是使用客户端......因为我需要完美的 sincronization beetwen 用户
  • 或者我可能需要一个与 socket.io 的开放连接
猜你喜欢
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2022-01-04
  • 1970-01-01
相关资源
最近更新 更多