Socketio无法从托管网站连接到Droplet

时间:2018-05-17 02:28:25

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

我有一个数字海洋小滴正在运行一个使用pm2运行的nodeJS服务器。当我在本地运行我的preact app并将io.connect设置为

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

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

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

当我尝试构建应用程序并将其放在相同的D.O Droplet上并使用nginx提供应用程序时,应用程序将在您转到URL时加载,但它无法连接到nodeJS服务器。当我尝试发布一些内容时,我从服务器收到一条确认信息,表明它获取了我的数据,但它从未转发给应用程序。

为什么它在本地和远程服务器上工作,但在我托管应用程序并使用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. 我的网站有来自加密的证书
  3. 如果我遗漏了所需的任何信息,请告诉我们!

1 个答案:

答案 0 :(得分:0)

我弄清楚问题是什么。

一旦我在我的nginx服务器上放置了证书,我就没有意识到我需要配置我的快速服务器也使用HTTPS。一旦我在快速服务器上启用了HTTPS,数据就可以很好地传输到连接的Web应用程序。