小编fla*_*esh的帖子

Node.js + Socket.io | 在服务器上设置自定义标头

我使用 Helmet 和 Express 从服务器端设置相当多的安全 HTTP 标头。当在 Node.js 应用程序顶部渲染客户端页面时,使用以下命令,这做得很好:

\n\n
var app = express();\napp.use(helmet());\n..\nres.render("pages/index", data);\n
Run Code Online (Sandbox Code Playgroud)\n\n

索引页上的所有资源都将具有 Helmet 标题。不幸的是,socket.io 有自己的标头管理。因此,/socket.io/ 之后的任何内容都将具有不安全/其自己的标头。例如这里:

\n\n
<https_path>/socket.io/socket.io.js\n<https_path>/socket.io/?EIO=3&transport=polling&t=Lj4CFnj&sid=ILskOFWbHUaU6grTAAAA\n
Run Code Online (Sandbox Code Playgroud)\n\n

因此,我想手动为所有 socket.io 项目设置自定义标头。

\n\n

这就是我需要 socket.io 的方式(仅摘录):

\n\n

/src/app.js

\n\n
var express = require("express");\nvar sio = require("socket.io");\nvar app = express();\nvar io = require("./../lib/io.js").initialize(app.listen(REST_PORT, () => {\n    logger.info("Application ready on port " + REST_PORT + " . Environment: " + NODE_ENV);\n}));\n
Run Code Online (Sandbox Code Playgroud)\n\n

/lib/io.js

\n\n
exports = module.exports = {};\nvar sio = require("socket.io");\nexports.initialize = function(server) {\n    var options …
Run Code Online (Sandbox Code Playgroud)

javascript websocket node.js socket.io engine.io

3
推荐指数
1
解决办法
9238
查看次数

根据时间戳条件过滤数组中的唯一对象

我有以下数组:

let arr = [
    {"id": 123, "lastUpdate": 1543229793},
    {"id": 456, "lastUpdate": 1545269320},
    {"id": 123, "lastUpdate": 1552184795}
]
Run Code Online (Sandbox Code Playgroud)

我需要根据相同的 ID 过滤数组,但还要检查“lastUpdate”时间戳并仅保留较新的条目。结果应该是:

[
    {"id": 456, "lastUpdate": 1545269320},
    {"id": 123, "lastUpdate": 1552184795}
]
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

arr = arr.filter((e, index, self) =>
    index === self.findIndex((t) => (
        t.id === intent.id && t.lastUpdate > e.lastUpdate
    ))
)
Run Code Online (Sandbox Code Playgroud)

但是,这为我过滤了所有内容,结果数组为空。我认为上面的最后一部分有问题&& t.lastUpdate > e.lastUpdate

非常感谢您的任何提示!

javascript arrays node.js ecmascript-6

2
推荐指数
1
解决办法
496
查看次数