express-ws 部署到 VPS 服务器时不处理调用

Posted

技术标签:

【中文标题】express-ws 部署到 VPS 服务器时不处理调用【英文标题】:express-ws doesn't handle call when deployed to VPS server 【发布时间】:2017-09-11 18:47:56 【问题描述】:

我使用 node.js + express 和 express-ws 依赖编写了后端。

在本地,一切正常。以前它被部署到red hat open shift,也没有任何问题。昨天我买了 VPS 配置它并在那里部署。除 websocket 外,一切正常。

我有启用 SSL 的 nginx,它在配置中与服务器相关的下一行

server 
  listen       ipaddresshere:80 default;
  server_name  _;

  location / 
      proxy_pass  http://ipaddresshere:8080;
  

  location /ws 
      proxy_pass  http://ipaddresshere:8080;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

  

我还有其他配置位置,但它们是由 VestaCP 和 https://certbot.eff.org/ 生成的

我知道对 /ws 路由的请求即将发送到 node.js 应用程序(我正在记录它)。但它不会交给那个处理程序

app.ws('/ws', SocketsHandler.registerWs);

最后它与我的最后一个处理程序匹配并返回 404

app.get('*', ErrorHandler.notFound);

问题:为什么 WS 库在 VPS 环境中不起作用但我在控制台中没有看到任何错误...?

附: Localy 我在没有 SSL 和 nginx 的情况下运行应用程序

wsServer.on('connection', function (socket) ...)

【问题讨论】:

本地是否可以使用 Nginx? 他说已经有@TarunLalwani 你把socket url从ws://改成wss://了吗? 当然在 https:我连接到 wss:。如果我不更改它,我会看到与 SOP 相关的错误。 【参考方案1】:

我发现我的配置被其他文件覆盖。所以不是连接“升级”;服务器正在接收连接“关闭”..

【讨论】:

以上是关于express-ws 部署到 VPS 服务器时不处理调用的主要内容,如果未能解决你的问题,请参考以下文章

我可以构建一个 Web 应用程序,以便将其部署到云或专用服务器/VPS 吗?如何?

用capistrano+Nginx+Passenger+MYSQL部署rails到VPS。

express-ws 中间件无法正确创建 websocket 服务器

节点服务器不使用 express-ws

在 express-ws 应用程序和打字稿中使用 Sessions

寻找合适的 VPS [关闭]