Javascript 使用node.js express应用程序的Webworkers

Javascript 使用node.js express应用程序的Webworkers,javascript,node.js,express,web-worker,Javascript,Node.js,Express,Web Worker,我是node.js新手,正在尝试构建一个express应用程序。 到目前为止,我已经安装了一个应用程序,并创建了一些基本路线 我的应用程序入口点是一个文件,在该文件中我正在使用应用程序设置服务器: #!/usr/bin/env node /** * Module dependencies. */ var app = require('../app'); var debug = require('debug')('main'); var http = require('http'); /

我是node.js新手,正在尝试构建一个express应用程序。 到目前为止,我已经安装了一个应用程序,并创建了一些基本路线

我的应用程序入口点是一个文件,在该文件中我正在使用应用程序设置服务器:

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('main');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
express应用程序使用mongoose在适当的http请求上与db通信

此时,我还需要一个web worker,当服务器启动时,它每5秒生成一个随机数,如果生成的数字是10,则将其标识为事件,并将一些结果存储在数据库中

到目前为止,我不确定如何从这一点开始,并将其包括在结构中


我已经设置了用于写入数据库等的接口。我刚刚对web worker实现和集成部分失去了兴趣。

在node.js中没有web Workers。但是我们有一个类似的叫做
子进程
(请查看文档了解更多详细信息:)

如何使用child_进程?stackoverflow中有许多物料: 有关于如何在主模块中运行其他模块的说明(有关详细信息,请查看): 在主模块中:

var cp = require('child_process');
var child = cp.fork('./othermodulefile');

child.on('message', function(m) {
  // Receive results from child process
  console.log('received: ' + m);
});

// Send child process some work
child.send('Please up-case this string');
或者请查看此链接以了解上瘾的描述 从那一页上举个例子: 文件:support.js

console.log("Child Process " + process.argv[2] + " executed." );
const fs = require('fs');
const child_process = require('child_process');

for(var i=0; i<3; i++) {
   var workerProcess = child_process.exec('node support.js '+i,
      function (error, stdout, stderr) {
         if (error) {
            console.log(error.stack);
            console.log('Error code: '+error.code);
            console.log('Signal received: '+error.signal);
         }
         console.log('stdout: ' + stdout);
         console.log('stderr: ' + stderr);
      });

      workerProcess.on('exit', function (code) {
      console.log('Child process exited with exit code '+code);
   });
}
文件:master.js

console.log("Child Process " + process.argv[2] + " executed." );
const fs = require('fs');
const child_process = require('child_process');

for(var i=0; i<3; i++) {
   var workerProcess = child_process.exec('node support.js '+i,
      function (error, stdout, stderr) {
         if (error) {
            console.log(error.stack);
            console.log('Error code: '+error.code);
            console.log('Signal received: '+error.signal);
         }
         console.log('stdout: ' + stdout);
         console.log('stderr: ' + stderr);
      });

      workerProcess.on('exit', function (code) {
      console.log('Child process exited with exit code '+code);
   });
}

Webworkers是一种网络技术(即在浏览器中运行)。节点是一种服务器端技术,不支持webworkers。您需要创建一个浏览器应用程序并在那里使用webworker。为什么需要使用webworker生成随机数?为什么不使用
setInterval()
set持续5秒?此外,您发布的代码对您的问题没有帮助,因为它与生成随机数无关。听起来就像是
setInterval()
的工作。node.js中没有内置Webworker。我想我使用Webworker这个术语是错误的。但是下面的代码将解决我正在尝试做的事情。非常感谢。这正是我想要的。非常感谢您包含这些链接。让我的生活轻松多了:)