Tag: 连接

Node.js静态文件服务器逻辑(使用Connect中间件)

假设我有以下文件系统结构: /app/ Main application folder /app.js Server JS file ran by node.js /public Folder containing files for public website (port 80) /index.html /js/ /game.js /admin/ Folder containing files used by local network system (port X) /index.html /js/ /screen.js /share/ Folder containing files to be used by public website OR lan /js/ /jquery.js 最终的结果是, admin/index.html看起来像: <script […]

什么是合作中间件的首选架构?

如果我创build了一个数据库支持的路由中间件来检查一些数据,而我现在想让它传递给一个视图/渲染中间件,那我最好的办法是什么? 我是不是该: 将我提取的数据附加到请求对象,并将我的渲染层设置为链中的下一个? 直接调用渲染层,就像我自己的路由器像中间件一样调用它? 也许还有其他一些build议? 我正在寻找一些通用的架构build议,这可能会帮助我确保我创build的每个function组件都不会变得难以维护和庞大。 我读过的一些东西有利于将事物分解成尽可能多的模块,这使得我认为上面的两个select可能是好的。 但也许一个更好,或者有什么我失踪?

发送自定义值来连接兼容的中间件?

我有一个快速服务器,我正在尝试编写一些中间件,检查用户是否达到指定级别,但是如何将中间件的level值传递给中间件。 示例app.js: app.get('/restricted',verify.auth('4') , routes.index); 例如auth.js exports.verify = function(req, res, next, requiredLevel) { if(userLevel>=requiredLevel){next}; }

parsingnodejs中的postdata值

我有以下格式的发布数据 authInfo={"user":"1","password":"a"} 我如何获得密钥,即authInfo。 我被困在这里了! req.query没有解决。 任何帮助都感激不尽。

使用NodeJS删除JavaScript中的websocket连接

#!/usr/bin/env node var WebSocketServer = require('websocket').server; var http = require('http'); var server = http.createServer(function(request, response) { console.log((new Date()) + ' Received request for ' + request.url); response.writeHead(404); response.end(); }); server.listen(8080, function() { console.log((new Date()) + ' Server is listening on port 8080'); }); wsServer = new WebSocketServer({ httpServer: server, // You should not use autoAcceptConnections […]

在定制中间件内使用Connect \ Express中间件

在自定义中间件中使用受欢迎的Connect中间件是否可行? 例如,我正在编写一些authentication中间件,这显然很大程度上依赖于Connect的cookieParser()和session方法。 这些方法是中间件,所以它们需要传递request , response和next参数。 显而易见的select是在添加我的身份validation中间件之前,确保将其添加到中间件堆栈中,如下所示: app.js: app.use(express.cookieParser('secret')) .use(express.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) .use(my_auth_middleware()) 但是这似乎有点麻烦,因为我的中间件依靠前两种方法来执行req.session 。 另一个显而易见的方法是将应用程序传递到我的中间件中,然后调用cookieParser()和session方法,但是因为它们都是中间件,所以我不得不将它们添加到堆栈中,这感觉不对: my_auth_middleware.js: module.exports = function(app){ app.use(express.cookieParser('secret')); app.use(express.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})); return function(req, res, next){ // do stuff with req.session next(); } } 任何人都可以证实,这是一个合乎逻辑的方式来做事吗? 有没有保持cookieParser()和session方法离开我的中间件的参数? 很明显,我在这些示例中使用了Express,但是我知道这些方法来自Connect。

“使用”和“下一个”文档在哪里?

我正在查看连接文档,并且似乎没有关于.use方法的任何文档或任何描述next()所做的事情next()要use的秘密第三个参数)。 我失明了,还是我在哪里可以find这个信息?

使用自定义的源代码replace默认的Express / Connect JS文件

我在my_server_root_folder/node_modules/express/node_modules/connect/lib/middleware/修改了一个JS源文件。 我想制作一个自定义文件的副本,并使用我的版本,而不是上面提到的path中的npm安装的版本。 如果我制作了“连接”模块的副本,并将其安装在my_server_root_folder/node_modules/connect ,我如何直接使用该模块而不是安装在my_server_root_folder/node_modules/express/node_modules/connect ?

如何与Node.js Express压缩中间件打好?

我想使用一些中间件来修剪HTML标记之间的所有空格,并将所有其他空格合并为一个空格。 这是为了帮助CSS,因为white-space-collapse: discard; 是不是广泛可用(如果是的话),我不是其他解决方法的粉丝。 我现在用一种天真的方式很好,但是我希望它能和express.compress中间件搭配。 这是我的: module.exports = function trimmer() { function getSize(chunk) { return Buffer.isBuffer(chunk) ? chunk.length : Buffer.byteLength(chunk); } return function trimmer(req, res, next) { var end = res.end , write = res.write , isHtml ; res.on('header', function() { //res.removeHeader('Content-Length'); // another thing I've tried; don't entirely understand it though }); res.write = […]

Nodejs:连接和“writeHead”在第一个连接callback

在连接的第一个callback中调用“res.writeHead(…)”时,总是收到错误“ 错误:发送后无法设置标题 ” var http = require('http'); var connect = require('connect'); var simpleApp = connect(); simpleApp .use(function(req, res, next){ res.writeHead(200, { 'content-type': 'text/html' }); res.write('response powered by SIMPLE connect-object as middelware'); console.log('Pre'); next(); console.log('Post'); }) .use(function(req, res, next){ console.log('I am the header guy!'); next(); }) .use('/admin', function(req, res, next){ console.log('someone entered the admin area….'); next(); […]