小编Ale*_*eks的帖子

带有nginx的Socket.io

我正在尝试通过nginx 1.6提供静态文件,并使用socket.io代理来自Node.js Web服务器的套接字流量.

这是nginx.conf的相关部分:

location /socket.io/ {
            proxy_pass http://localhost:3000;       
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
        }
Run Code Online (Sandbox Code Playgroud)

它在浏览器和Node.js之间直接完美地工作,但是当使用nginx 1.6代理时,socket.io需要太长时间.握手协议需要花费太多时间,但如果保持不间断,它最终会在几分钟后开始工作.

nginx提供的静态文件完美运行.

可能是什么问题呢?

更新:

我分析了一下网络流量,并确定以下请求大约持续一分钟(这正是请求升级时):

Sec-WebSocket-Key: LhZ1frRdl+myuwyR/T03lQ==
Cookie: io=1-A7tpvwmoGbrSvTAAA5
Connection: keep-alive, Upgrade
Upgrade: websocket
....
Run Code Online (Sandbox Code Playgroud)

预期的响应是代码101和:

Connection: upgrade
Sec-WebSocket-Accept: HXx3KKJadQYjDa11lpK5y1nENMM=
Upgrade: websocket
...
Run Code Online (Sandbox Code Playgroud)

相反,浏览器接收400并且:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://localhost:8888
Connection: keep-alive
Content-Type: application/json
Server: nginx/1.6.2
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)

更新2:

我确定相同的配置在我的办公室计算机上完美运行,这意味着它是我的家用电脑问题.无论如何,确定到底出了什么问题会非常好.

nginx cors socket.io

19
推荐指数
4
解决办法
3万
查看次数

为什么要使用 Apollo GraphQL Sever 进行 Express(或其他集成)?

我正在努力理解 Express(或 Koa、Hapi 等)与 Apollo GraphQL 服务器集成的附加价值。

我发现它可以在独立模式下很好地工作(例如:https : //medium.com/codingthesmartway-com-blog/apollo-server-2-introduction-efc4026f5654)。

在哪种情况下我们应该使用(或不使用)集成?是什么推动了这个决定?

apollo graphql

11
推荐指数
1
解决办法
703
查看次数

Ubuntu上的node-html-pdf businesscard示例

我试图在Ubuntu 16.04上使用node-html-pdf(https://github.com/marcbachmann/node-html-pdf)节点模块,并已开始使用给定的businesscard示例.

很遗憾,我无法生成此PDF.

首先,我在本地安装了模块.

然后我将businesscard.html和image.png复制到我的项目中,并尝试执行以下代码而不进行任何更改:

var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('./test/businesscard.html', 'utf8');
var options = { format: 'Letter' };

pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
  if (err) return console.log(err);
  console.log(res); // { filename: '/app/businesscard.pdf' }
});
Run Code Online (Sandbox Code Playgroud)

结果是一个带有2个黑页的PDF(ok),带有正确的文本,但格式要大得多,字体不对,我无法在其中获取图像.

看起来像一些基本配置,缺少路径或类似...

有线索吗?

html pdf node.js node-html-pdf

7
推荐指数
1
解决办法
249
查看次数

单页面应用程序(SPA)中的不同JavaScript库

我正在构建一个基于jqWidgets库的单页面应用程序(SPA)(它依次构建在jQuery UI的顶部).

现在我想使用另一个框架构建的widget组件(可能是Ext JS或jQuery UI).

我担心CSS兼容性可能存在的问题; 我在这个主题上阅读了很多,并找到了所谓的CSS Scope属性.不幸的是,我没有看到关于这个主题的最新文本,所以我不确定它的状态.

在SPA中还有其他可能性来解决这个问题吗?或解决方法?

css jquery extjs

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

如何配置环回以在标头中使用access_token

我正在使用access_token处理逻辑表单环回.它工作正常,但不幸的是期望URL中的access_token.

我可以配置环回来使用标头自定义字段中的access_token吗?

loopbackjs

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

loopback remote方法:参数验证

是否有一个表单使环回自动验证远程方法中的输入参数?

我们假设我们有一个远程方法的以下定义:

  WebuserModel.remoteMethod('overLogin',  {
      description: "Performs a Webuser's login to the system",
      accepts: [
        {
          arg: 'credentials', type: {
            "username": { type: "string", required:true },
            "password": { type: "string", required: true }
          },
          http: {source: 'body'},
          required: true
        },
      ],
      returns: {arg: 'accesToken', type: "object", root: true},
      http: {path: '/login', verb: 'post'}
    }
Run Code Online (Sandbox Code Playgroud)

我希望loopback能够在每个请求上执行输入参数的验证,并在传递的对象不符合定义的模式(具有两个强制属性的强制对象)时引发错误.

显然它不会发生.任何线索?

loopbackjs

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

另一个 npm 项目中的 Npm 项目

我想组织我的项目以轻松重用某些模块。我不确定我的方法是否正确。

假设我们有一个带有两个子项目的主项目。像这样的东西:

- main-project
  - index.js
  - project.json
  - node_modules
    - reused_module
      ...
  - sub-project1
    - index.js
    - project.json
    - node_modules
      - private_module1
        ...
  - sub-project2
    - index.js
    - project.json
    - node_modules
      - private_module2
        ...
Run Code Online (Sandbox Code Playgroud)

现在,project2 inner1 和inner2 都可以访问reused_module,但我想知道它们project.json 文件中的依赖关系。

如果reused_module 列在inner1/package.json 的依赖部分中,它将被复制到它自己的node_modules(我想避免,以强制重用)。

如果reused_module 未在inner1/package.json 中列出,则此依赖项将是“隐藏的”。

我现在应该对此有什么看法吗?难道我做错了什么?

npm node-modules package.json

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

ENV在分布式Node系统中的正确使用

我正在构建一个相对复杂的分布式节点系统。假设有两个进程(节点应用程序),A 和 B。它们在不同的项目中定义。

此外,还有一些定制的节点模块,在 A 和 B 中使用。我们称它们为 M 和 N。此外,M 使用 N。

我应该如何正确处理环境变量?

我想我应该为两个主要进程(A 和 B)定义 .env,从那里处理所有 ENV 变量,然后简单地将所需的 env 变量从那里传递到 M 和 N。这样,M 和 N(以及其他内部模块) 将接收它们自己的 ENV 变量作为创建时的参数传递。

这种方法是否正确?

environment-variables distributed-system node.js

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

使用selenium-webdriver执行序列(用于Node JS)

我对selenium-webdriver命令的执行顺序有点困惑.

以下示例的正确编码是什么?我想要:

  1. 首先,在文本框中输入文本
  2. 然后,点击按钮

以下代码是否保证正确的顺序?

   // Enter the text
    driver.findElement(webdriver.By.id('txt'))
      .sendKeys('bla bla')
      .then(
        function() {},
        function(err) {
          console.log(err);
          done(err); 
        }
      );

    // Press the button
    driver.findElement(webdriver.By.id('btn'))
      .click()
      .then(
        function() {
          done();
        },
        function(err) {
          console.log(err);
          done(err); 
        }
      );
Run Code Online (Sandbox Code Playgroud)

或者我应该这样做?

// Enter the pass
driver.findElement(webdriver.By.id('txt_pass'))    
  .sendKeys('sifra')
  .then(
    function() {
      // Press the login button
      driver.findElement(webdriver.By.id('btn_login'))
        .click()
        .then(
          function() {
            done();
          },
          function(err) {
            console.log(err);
            done(err); 
          }
        );
    },
    function(err) {
      console.log(err);
      done(err); 
    }
  );
Run Code Online (Sandbox Code Playgroud)

如果第二种情况是正确的,当需要连续执行多于2个操作时,我应该如何编写代码?我会很复杂,不得不维持.

更新:

现在假设我要清除在第一个findElement中找到的元素"txt",并在我输入文本之前执行它.基于路易斯的答案,我怀疑它应该是这样的:

   // Clear the textbox …
Run Code Online (Sandbox Code Playgroud)

mocha.js node.js selenium-webdriver

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

使用环回拦截错误处理

有关环回中错误处理的完整,一致且记录良好的信息源吗?

错误代码及其含义,与http状态的关系等.我已经阅读过他们的文档但没有找到这样的东西.

我想翻译所有消息,为我的应用添加多语言支持.我还想添加我的自定义消息及其代码,并与其他环回错误一致地使用它.

为了实现这一点,我需要拦截所有错误(我已经完成了这个)并知道所有可能的不同代码,所以我可以翻译它们.

例如,如果代码555出现错误,我必须知道它的含义并相应地对待它.

有任何想法吗?

loopbackjs

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