实时数据更新功能可在本地使用,但不能实时使用? Socket.io + Node.js + Vue.js + AWS EC2

时间:2019-01-09 08:18:17

标签: node.js amazon-web-services vue.js amazon-ec2 socket.io

该代码在我的本地计算机上可以正常工作,但是当它在AWS EC2的实时服务器上上传时,连接被拒绝。

出于测试目的,我们尝试在AWS EC2上删除安全性,该功能现已正常运行。

因此,我们不确定它可能在AWS EC2的Security配置或Node服务器的代码中。

节点服务器端口(8001)的安全性仅允许使用1个特定的IP地址,该IP地址是试图连接节点服务器的站点本身的IP地址(samplehostname.com)。

节点服务器的安全要求是我们允许一切(用于测试):

//previous method to initialize svgjs 2.7
const svgWindow   = require('svgdom');
const SVGJS = require("svg.js")(svgWindow);

//with version 3.0.5 the package name changed
const svgWindow = require("svgdom");
const SVGJS = require("@svgdotjs/svg.js");

SVGJS(svgWindow); //is not a function error

错误日志为:

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', "*:*");
    res.header('Access-Control-Allow-Methods','GET');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
})

Node.js代码:

GET http://samplehostname.com:8001/socket.io/? 
EIO=3&transport=polling&t=MWnX8e4 net::ERR_CONNECTION_REFUSED

Vue.js代码:

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

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', "*:*");
    res.header('Access-Control-Allow-Methods','GET');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
})

io.on('connect', function (socket) {
  console.log(`Socket Connected ID: ${socket.id}`)
  var Redis = require('ioredis')
  var redis = new Redis({
    host: 'localhost',
    port: 1234,
    password: 'samplepasswordhere',

  })

  redis.subscribe('(CHANNEL-HERE)')

  redis.on("message", function (channel, message) {
    var parsed_message = JSON.parse(message)
    socket.emit(channel, parsed_message.data.data)
    console.log(message)
  })

})

var listener = server.listen(8001, ()=>{
    console.log('Node Server Listening on port ' + listener.address().port)
});

0 个答案:

没有答案