从服务器返回JS函数作为字符串并执行?

时间:2015-09-15 16:19:26

标签: javascript node.js sockets

我试图在node.js服务器上限制socket.io连接时间。我问过上一个问题是否可以在不造成服务器上的巨额开销的情况下实现这一点,或者如果我们在不同的房间中说1000个并发套接字连接,则阻塞主线程,通过以下方式:

socket.on('connection', function(params){
   var maxTime = params.maxTime; 
   socket.join(params.roomId);
   setTimeout(function{
   socket.leave(params.roomId);
}, 180000)
});

最好的情况是从资源的角度在客户端处理这个问题,但是发送超时/断开连接值并不是完全安全的,因为处理它的任何客户端代码行都可以很容易地被操作并且知道用户实际上可以防止调用断开连接事件/功能。

我可以执行以字符串形式发送的客户端函数吗?说:

setTimeout(function(){//disconnect},18000);
socket.emit('timeout_set', function(params){foo:bar});

然后在服务器上正确处理并知道已确定超时的响应:

socket.on('timeout_set', function(params){
socket.emit('proceed_with_stuff', {foo:bar});//includes critical info for proceeding
});

我认为这取决于一些事情:

  1. 你能从服务器响应中获取一个字符串并将所述字符串作为JS执行吗?
  2. 客户端是否仍然可以在不触发socket.disconnect事件的情况下中断setTimeout函数?
  3. 这种逻辑或类似的东西可能吗?
  4. 第一个场景是否会在给定多个并发连接的node.js服务器上运行?

1 个答案:

答案 0 :(得分:0)