小编alo*_*kad的帖子

NodeJS + Express - 将会话中间件应用于某些路由

我有一些带有一些路由的Express应用程序,其中只有两个需要支持会话.我到处读到中间件定义(app.use(express.session({...)仅适用于它之后的路由,所以我创建了这个示例:

var express = require('express');
var app = express();
app.use(express.bodyParser());

app.get('/path1', function (req, res) {
    res.send('text response');
});


app.use(express.cookieParser());
app.use(express.session({
    secret: 'secret',
    cookie: { maxAge: new Date(Date.now() + 2 * 60 * 1000) }
}));


app.get('/path2', function (req, res) {
    res.session.test = { "test": "test" };
    res.send('text response');
});

app.listen(8088);
Run Code Online (Sandbox Code Playgroud)

但这不起作用:/ path2 res.session未定义.
如果我移动会话中间件定义 - 一切正常,但我看到在调用/ path1时正在创建会话(这是我想要避免的)

有人可以解释单个应用程序如何仅在某些路由中使用会话.

谢谢!

/////更新//////

经过多次挖掘 - 我想通了:

不要使用:app.use(express.session({ ... }));
相反 - 定义以下内容:

var sessionMiddleware = express.session({
    //session configurations …
Run Code Online (Sandbox Code Playgroud)

session node.js express

23
推荐指数
1
解决办法
1万
查看次数

在请求模块中捕获“套接字挂断”错误

我正在使用请求模块向第 3 方 API 发送请求(GET 和 POST)。

我正在使用超时选项来限制响应的等待时间(不能等待太久)。

问题是有时会抛出以下异常:

错误:socket 在 createHangUpError (http.js:1476:15) at Socket.emit (events.js:117:20) at TCP.close (net.js) 的 Socket.socketCloseListener (http.js:1526:23) 挂断:465:12)

我猜这是因为请求被中止(由于超时)但套接字仍然打开并在 2 分钟后挂断。

问题是 - 当请求中止或如何捕获此异常并优雅地处理它时,我该怎么做才能关闭套接字。

这是我使用的相关代码:

var request = require('request'),
    requestOptions = {
        url: 'http://example.com/api',
        timeout: 1000
    };

request(requestOptions, function onResponse(error, response, body) {
    if (error) {
        //Trying to close the socket (to prevent socket hang up errors)
        //**Doesn't help**
        this.req.socket.destroy();
        this.req.destroy();
        return;
    }

    //Handle the response
});
Run Code Online (Sandbox Code Playgroud)

javascript sockets node.js

5
推荐指数
0
解决办法
707
查看次数

iOS 8 Safari - 页面缩放时无法滚动元素的内容

此问题仅在iOS 8中发生(确切地说是8.1).它不会在iOS 7中重现.

用例:在具有可滚动(长)内容的元素内滚动.

如果页面未放大 - 它按预期工作.

当您放大页面 - 它停止工作时,页面会滚动(就像您到达可滚动内容的末尾).效果是连续的:缩放越高 - 滚动内容的可能性越小.

测试页面:这里

打开iOS 8 Safari中的链接 - 看看列表元素是否可滚动.

现在放大页面并尝试滚动列表的内容 - 滚动页面而不是列表中的项目.我已经放置了红色标记,因此很容易看到页面滚动.

我尝试过不同的CSS规则甚至JS来阻止页面滚动(这仍然会使元素的内容滚动).

有没有人遇到过这种行为或有建议如何修复它?我真的不想用JS实现内容滚动.

禁用页面上的缩放(使用元视口)对我来说不是一个选项.

scroll mobile-safari zooming ios8

5
推荐指数
0
解决办法
1644
查看次数