【问题标题】:Socketio won't connect from hosted site to dropletSocketio 不会从托管站点连接到 droplet
【发布时间】:2018-10-27 04:38:12
【问题描述】:

我有一个数字海洋水滴,它正在运行一个使用 pm2 运行的 nodeJS 服务器。当我在 io.connect 设置为

的情况下在本地运行我的 preact 应用程序时
io.connect('app.ardilabs.com:9080');

app.ardilabs.com 是 nodeJS 服务器所在的位置。

本地运行的网络应用程序将从 D.O. 连接到远程服务器。然后将使用我正在使用 Postman 发布的数据更新我的应用程序。

当我尝试构建应用程序并将其放在同一个 D.O 液滴上并使用 nginx 为应用程序提供服务时,当您转到 URL 时应用程序将加载,但它不会连接到 nodeJS 服务器。当我尝试 POST 某些内容时,我会从服务器确认它获取了我的数据,但它从未转发到应用程序。

为什么它可以在本地和远程服务器上工作,但在我托管应用程序并使用 nginx 提供服务时却不行?我真的很难过。

这里是相关的服务器代码:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies

// routes will go here
io.on('connection', function(socket){
    //We need a connection but we don't need to do anything about it
});

// start the server
http.listen(9080, function() {
    console.log('listening on *:9080');
});

这里是相关的客户端代码:

import io from 'socket.io-client';

const socket = io.connect('app.ardilabs.com:9080');

一些额外的说明:

  1. 我使用 nginx 作为我的网络服务器
  2. 我的网站有来自 Let's Encrypt 的证书

如果我缺少任何需要的信息,请告诉我!

【问题讨论】:

  • 请显示你的 nginx 配置。

标签: node.js reactjs nginx socket.io digital-ocean


【解决方案1】:

我发现了问题所在。

一旦我在我的 nginx 服务器上放置了一个证书,我就没有意识到我需要将我的 express 服务器配置为也使用 HTTPS。一旦我在快速服务器上启用了 HTTPS,数据就会很好地传递到连接的网络应用程序。

【讨论】:

  • 能否请您提供您的 nginx 和 express 配置?
  • 我找到了问题,上面的解决方案,你问是因为你需要它来解决你的问题吗?如果不是,请意识到我很久以前就解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 2011-04-15
  • 2020-12-21
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多