Tag: 快速

调节CPU NODE.JS操作以允许处理新的调用

我有一个expressJS应用程序接受一个请求,导致执行1K到50K fs.link()操作。 (甚至可能达到500K)。 请求(POST)不会在这种情况下被阻止。 我马上开始res.send(),使客户感到高兴。 但是,服务器然后“分叉”下面的工作,这需要去做所有的fs.links()发生asynchronous,但工作量(CPU,DISK等)意味着ExpressJS服务不是很响应在这段时间内对新的请求。 有没有一些简单的方法(除了childProcess)模拟分配一个低优先级的线程,将做这些文件链接? Job.prototype.runJob = function (next) { var self = this; var max = this.files.length; var count = 0; async.each(this.files, function (file, step) { var src = path.join(self.sourcePath, file.path); var base = path.basename(src); var dest = path.join(self.root, base); fs.link(src, dest, function (err) { if (err) { // logger.addLog('warn', "fs.link failed […]

在Heroku和node.js的每个请求上运行的后台作业

我有一个应用程序需要运行一个非常漫长的过程(每个请求需要30-60秒)。 处理结束后,返回结果作为响应。 这工作正常,但它崩溃了我的Heroku实例。 我想要发生的是: 用户来到现场,请求发送到后端 后端立即返回,并开始执行处理的另一个进程/任务/作业 处理结束后,响应将返回给正确的用户。 我不确定我需要什么。 基于一个小时的研究,似乎我可以使用Redis作为队列,工作人员可以每隔x分钟轮询一次。 但是我不能理解的是如何计算出处理结束后发送响应的请求。 有没有一个示例Express / node.js? 任何指针都是有帮助的。

如何用特定的JS以特定的方式读取URL中的参数

我创build了一个快递包的服务器,我试图以特定的方式读取URL中的参数。 url如下所示: http : //127.0.0.1 : 8080/screen=3 (no为参数的符号)。 我需要将屏幕的编号保存在一个variables中。 我试过这个: var express = require('express'); var app = express(); app.get('/screen:sceenNum', function (req, res) { var temp = req.sceenNum; res.send(temp); //for checking on the browser }); 我也试过这个,但是他必须得到'?' 在URL中: app.get('/', function(req, res) { var screenNum = req.param('screen'); res.send(screenNum); }); 任何人都可以请有解决scheme? 谢谢

CryptoSwiftencryption的数据与Node.js不同

我使用CryptoSwiftencryption一些数据,然后使用Node.jsencryption相同的数据。 但结果不一样。 我问作者,他说这不是一个错误。 我不知道我在哪里犯了一个错误。 这里是我如何使用CryptoSwift和Node.js的图片: 密码algorithm:aes-256-cfb 键:32字节1 iv:16个字节0 CryptoSwift:开发分支0.1.1 Node.js:LTS 4.2.3 由CryptoSwiftencryption的数据 由Node.jsencryption的数据4.2.3 这里是swift代码: func testAES() { let key = [UInt8](count: 32, repeatedValue: 1) let iv = [UInt8](count: 16, repeatedValue: 0) print(key) print(iv) let aes256cfb = try! AES(key: key, iv: iv, blockMode: .CFB) let en1 = try! aes256cfb.encrypt([0x5, 0x77], padding: nil) print(en1.map({ i in String(format: […]

iOS Swift与Node JSencryption不同的输出

我不知道我的Node JS代码有什么问题。 节点JS的输出缺less一些字符,而不是iOS Swift中的输出。 我的节点JS代码: var crypto = require('crypto'); var CRYPTO_ALGORITHM = "aes-256-ctr"; var CRYPTO_PASSWORD = "3zTvzr3p67VC61jmV54rIYu1545x4TlY"; var CRYPTO_IV = "0123456789012345"; var string_data = "OLIVER MARTINEZ OLIVER"; var cipher = crypto.createCipheriv(CRYPTO_ALGORITHM, CRYPTO_PASSWORD, CRYPTO_IV); var encrypted = cipher.update(string_data, "utf8", "hex"); encrypted += cipher.final("hex"); // to hex console.log("encrypted final: " + encrypted); // ————————————————————— // var encrypted_string […]

我如何使用Alamofire进行基于令牌的authentication?

服务器是用node.js / express写的,会共享下面的代码。 我的目标是将用户身份validation到iOS应用程序中,例如让用户看到用户界面 在IOS / Swift端,用户input电子邮件和密码 import UIKit import Alamofire class LoginViewController: UIViewController { @IBOutlet weak var emailField: UITextField! @IBOutlet weak var passwordField: UITextField! @IBAction func loginButton(sender: AnyObject) { let parameters = [ "email": emailField.text!, "password": passwordField.text! ] // What exactly I have to write to authenticate the user?? Alamofire.request(.POST, "https://genietesting.herokuapp.com/auth/login", parameters: parameters, encoding: […]

如何使用swift 3 for iOS连接到MEAN stack REST api

我试图用iOS创build一个简单的login应用程序,该应用程序使用MEAN堆栈服务器公开REST API以供iOS端连接。 我一直在服务器端工作,并有一个API,允许用户创build一个电子邮件和密码的用户。 我也创build了DELETE和GET请求,按照这个教程: https : //codeforgeek.com/2015/08/restful-api-node-mongodb/ 不过,我不确定如何在iOS端login这些信息。 我有几个问题是: 我需要为iOS端创build一个令牌吗? 我需要一个validation方法吗? 我已经包含了我的服务器和我的iOS下面的代码。 我对这两种语言都很陌生,所以任何帮助将不胜感激。 先谢谢你。 app.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); app.use( bodyParser.json() ); // […]

expression错误中间件不处理从promise.done()抛出的错误

如果我抛出一个错误,express使用connect errorHandler中间件很好地呈现它。 exports.list = function(req, res){ throw new Error('asdf'); res.send("doesn't get here because Error is thrown synchronously"); }; 当我在一个承诺中抛出一个错误,它将被忽略(这对我来说是有意义的)。 exports.list = function(req, res){ Q = require('q'); Q.fcall(function(){ throw new Error('asdf'); }); res.send("we get here because our exception was thrown async"); }; 但是,如果我在一个promise中抛出一个Error并且调用“done”节点崩溃,因为这个exception不被中间件捕获。 exports.list = function(req, res){ Q = require('q'); Q.fcall(function(){ throw new Error('asdf'); }).done(); res.send("This […]

如何在Multer Express中validationfile upload的大小?

我使用Multer作为Express中的 multipart/form-data中间件。 我想知道如何validation上传的文件的大小,最好是他们正在上传。 我知道你可以在实例化Multer的时候在options对象中设置limits : app.use multer limits: fileSize: 1024 * 1024 但是,这只会截断上传的文件,不允许显示“文件太大”的错误消息。 当文件大小超过限制时。 我也检出了事件处理函数onFileUploadData(file, data) ,您可以在其中访问file对象和data缓冲区。 在这里,我可以通过检查data.length来检查当前的文件大小。 但是,我不清楚如何处理data.length大于我想允许的最大上传文件大小的情况。 最终,我的想法是,当Multerparsing请求并且上传的文件太大时,我想向用户显示一条Flash消息并redirect到表单,以便可以尝试更小的文件。 我的控制器的create行为看起来像这样: exports.create = (req, res) -> Record.create(req.body) .success (record) -> image = req.files.image uploadImage(image, record.id).then -> req.flash 'success', 'Record created.' res.redirect "/records/#{record.id}" .error (err) -> req.flash 'error', err res.redirect 'records/new' 问题是, req.files.image已经是parsing的图像,此时上传到系统tmp文件夹。 所以即使在这里检查文件的大小也不会真的让我防止不必要的大file upload。 一般来说,使用Multer或其他表单parsing中间件来处理Express的file […]

一起服务ExpressJS和EmberJS

我有点困惑如何join客户端和服务器,特别是连接到ExpressJS RESTful服务器的EmberJS客户端。 在开发中,我有我的Express服务器运行,端口3000.然后,使用 ember serve 我有一个客户端运行在端口4200.一切都很好,服务器和客户端一起工作。 现在,让我们说我需要部署到一台服务器。 这是我感到困惑的地方。 我构build了我的烬宝应用程序,将我的服务器应用程序中的所有文件从“dist”复制到我的“公共”文件夹中。 这工作,所有的路由是由Ember处理 – 直到我尝试从地址栏导航。 然后快速启动并尝试路由应用程序,返回一个404。 如何部署真实世界的应用程序来说Heroku? 他们只有我能看到的选项是我有Heroku上运行的多个应用程序 – 一个服务器应用程序,然后是一个客户端应用程序。 这种设置的最佳/常用做法是什么? 谢谢