小编Mer*_*erc的帖子

识别哪个选项卡发出了请求

这个问题可能没有答案.但是,我以为我会试一试.我写了一篇很棒的单页应用程序.当应用程序启动时,打开的选项卡将"自身"注册到服务器,该服务器存储为"活动"选项卡.

如果用户A在工作空间中更改XYZ,则任何用户在该工作空间上打开的每个选项卡都会收到XYZ已更改的通知.这会触发客户端的重新加载,这将会神奇地更新.目前,我通过民意调查来做到这一点.但是,当它全部工作时,我可以使用像WS或Socket.io这样的东西来使事情变得更快.

问题:每个标签都会收到通知.甚至是第一个发起它的标签!(因此,已更新的屏幕会更新)

我不知何故需要服务器知道发出请求的选项卡的选项卡ID.请记住,用户可能打开5个选项卡:如果他们更改了XYZ,则所有选项卡都应该收到通知,除了实际触发通知的选项!

目前,我正在为每个Ajax请求传递工作区ID(用户可能已登录,并且可以同时访问多个工作区).

  • 解决方案1:为每个请求附加工作区ID 选项卡ID
  • 解决方案2:仅对每个请求使用选项卡ID.该应用程序将从tabID(它知道它属于哪个工作区)计算工作区ID
  • 解决方案3:????? (我遗失的东西?)

有任何想法吗?

javascript ajax

6
推荐指数
1
解决办法
174
查看次数

一起使用cookieParser()和cookieSession()?

cookieParser()我们可以选择用一个秘密句子来签名cookie,这对于防止篡改非常有用.我知道cookie是用特殊值签名的,以防止篡改.

我刚刚发现了cookieSession(),我发现它是服务器存储的cookie的一个很好的替代品(我只存储{ loggedIn = true, userId=763487246824632},它永远不会增长).

但是......我发现为cookieParser()设置"秘密"会破坏事情,如果秘密句子匹配,cookieSession()就会停止工作.原因似乎是如果使用相同的秘密对cookie进行签名,那么cookieParser()实际上会接受并解析它.奇怪的是,一旦cookieParser()完成了它的工作,并且具有相同的签名秘密,会话将被设置为:

{ cookie: 
   { path: '/',
     _expires: null,
     originalMaxAge: null,
     httpOnly: true } }
Run Code Online (Sandbox Code Playgroud)

而不是:

{ testing: 'OOO' }
Run Code Online (Sandbox Code Playgroud)

(每次重新加载都会添加'o')所以......

  • 我的分析是否正确?
  • { cookie如果秘密句子匹配,你知道为什么会话被设置为那个奇怪的对象吗?

芝加哥商业交易所.

cookies node.js express

6
推荐指数
1
解决办法
2184
查看次数

使用Facebook和Passportjs进行身份验证:什么是accessToken,注册后我应该存储什么?

我正在使用Passport使用Facebook注册/验证.当oAuth成功时,我将被退回:

  • accessToken
  • refreshToken
  • profile

现在......当用户使用Facebook成功注册时,我存储accessTokenprofile信息.当有人想登录并再次通过oauth动作时,我的应用程序再次获得accessToken并且profile.麻烦的是,accessToken是不同的.我实际上期望在第一次认证后accessToken是相同的...

此时,我将自己的本地用户与id个人资料中的facebook 字段连接起来.但是......我将如何实际使用accessToken?保留它是否有意义?如果是这样,我为什么要保留呢?

我实际上期望accessToken是相同的,并使用它来匹配成功的登录.我显然不能这样做......所以我很困惑!

authentication oauth node.js express passport.js

6
推荐指数
2
解决办法
1326
查看次数

为什么在创建作用域时将参数传递给anon函数

对不起,标题很糟糕,但我想不出更好的一个.

Polymer中的ShadowDOM.js文件执行此操作:

(function(scope) {
  "use strict";
  var unsafeUnwrap = scope.unsafeUnwrap;
  var wrap = scope.wrap;
  var nonEnumDescriptor = {
    enumerable: false
  };
  function nonEnum(obj, prop) {
    Object.defineProperty(obj, prop, nonEnumDescriptor);
  }
  function NodeList() {
    this.length = 0;
    nonEnum(this, "length");
  }
  NodeList.prototype = {
    item: function(index) {
      return this[index];
    }
  };
  nonEnum(NodeList.prototype, "item");
  function wrapNodeList(list) {
    if (list == null) return list;
    var wrapperList = new NodeList();
    for (var i = 0, length = list.length; i < length; i++) {
      wrapperList[i] = wrap(list[i]); …
Run Code Online (Sandbox Code Playgroud)

javascript scope

6
推荐指数
1
解决办法
36
查看次数

Nodejs 的类图?

我正在研究node.js。我正在慢慢地“到达那里”。不过,我有一个问题。有没有一个“图”来弄清楚类的层次结构?

我意识到套接字既是一个 EventEmitter,也是一个 Stream,并且……那么,是否有一个易于阅读的图表来弄清楚什么是什么?

oop node.js

5
推荐指数
1
解决办法
9692
查看次数

从节点中的模块加载特定文件

我写了一个模块simpledblayer-mongo。该模块依赖于simpledblayer(它提供特定于 DB 的功能)。

我在进行单元测试时遇到问题。这里的问题是:

  • simpledblayer-mongosimpledblayertest.js文件)获取测试列表
  • 使用 GIT 很容易在其中定义“子模块”simpledblayer-mongo并确保子模块位于 node_modules 下。因此,包含所有测试的文件将位于 node_modules/simpledblayer/tests
  • 使用 NPM,我将其定义simpledblayerdevDependency. 没有真正的需要,因为无论如何都simpledblayer需要simpledblayer-mongo,作为直接依赖

我遇到的问题是:用户可能会从 GIT(该模块将保证在 node_modules/simpledblayer 中)或 NPM(该模块可能被放置在 node_modules 中,或者它实际上可能被重复数据删除/等)获取模块,并且它可能在任何地方,真的)。

我需要加载simpledblayer'stest.js文件,无论它在哪里(只要它simpledblayer本身作为模块是必需的)。无论模块的路径是什么,有关从模块获取特定文件的任何提示?

谢谢!

梅尔。

git unit-testing node.js npm

5
推荐指数
1
解决办法
1253
查看次数

关闭非常繁忙的生产节点

我在生产服务器上有一个非常非常繁忙的节点应用程序.该应用程序处理实时聊天(使用websockets)以及电子商务付款.虽然一切都是绝对设置的,所以当服务器关闭时,客户端将重新连接其套接字等,我仍然有一个问题:每当服务器停止时,使用SIGINT,事件循环都会被切断.这意味着任何挂起的DB写入(可能用于金融交易)都会被丢弃.有两个特别关键的时刻(当信用卡商家给出OK时,但我们在数据库上写下记录之前),目前我们在非高峰时间关闭它以防止任何可能的问题.但这很糟糕.

我认为这是一个解决方案:

  • 我向进程发送一个自定义UNIX信号(例如SIGUSR2?);
  • 当server.js获得信号时:
    • 它停止听80端口
    • 它等待事件循环干涸
    • 如果在10秒之后它仍然悬挂,它会强制关闭.这意味着在每次重启时服务器将最多停机10秒钟.

这是现实世界中的人们做的吗?有问题吗?如何检查事件循环是否为空?

node.js

5
推荐指数
1
解决办法
110
查看次数

ES6和ES7的特点是没有babel在反应原生中进行转换?

我很乐意使用Javascript ES6和ES7语法(特别是async/await,我的新朋友),而无需转换.这甚至是一种选择吗?它应该是一个选择吗?

这一切都取决于子问题:在Android和iOS上,Javascript引擎做了什么反应 - 本机有效使用?它取自设备本身?(在这种情况下,转换是唯一的选择......)或者它是由React Native提供的吗?

async-await ecmascript-6 react-native ecmascript-7 ecmascript-2017

5
推荐指数
1
解决办法
383
查看次数

0.5 时向上或向下舍入

我对 Javascript 在达到 0.5 时四舍五入的方式有问题。我正在编写征费计算器,并注意到结果中有 0.1c 的差异。

问题是他们的结果是21480.705我的应用程序转换成的结果21480.71,而关税说21480.70

这就是我在 Javascript 中看到的:

(21480.105).toFixed(2)
"21480.10"
(21480.205).toFixed(2)
"21480.21"
(21480.305).toFixed(2)
"21480.31"
(21480.405).toFixed(2)
"21480.40"
(21480.505).toFixed(2)
"21480.51"
(21480.605).toFixed(2)
"21480.60"
(21480.705).toFixed(2)
"21480.71"
(21480.805).toFixed(2)
"21480.81"
(21480.905).toFixed(2)
"21480.90"
Run Code Online (Sandbox Code Playgroud)

问题:

  • 这种不稳定的路由到底是怎么回事?
  • 获得“四舍五入”结果(达到 0.5 时)的最快最简单方法是什么?

javascript math precision rounding

5
推荐指数
1
解决办法
823
查看次数

ES6 导入的执行顺序(HTML 和代码)

如果我有以下情况:

<script type="module" src="one.js"></script>
<script type="module" src="two.js"></script>
<script type="module" src="three.js"></script>
Run Code Online (Sandbox Code Playgroud)
  1. 我说得对吗,你不能 100% 确定会在和之后three.js执行? one.jstwo.js

但是,如果我有:

<script type="module">
  import 'one.js'
  import 'two.js'
  import 'three.js'
</script>
Run Code Online (Sandbox Code Playgroud)
  1. 我是否可以确信将在和之后three.js执行?(这个很重要) one.jstwo.js

对可能重复的评论

我知道这看起来像是一个重复的问题,但请记住,这个问题的目的是确认通过 HTML 导入和通过 JavaScript 导入的截然不同的行为

javascript es6-modules

5
推荐指数
1
解决办法
757
查看次数