我正嘗試連接到aws ec2實例上的套接字。出於某種原因,我無法這樣做。我的客戶端代碼:Socket.io不能在nodejs上使用aws
var socket = io.connect('http://ec2-MY-IP.us-west-2.compute.amazonaws.com:3000');
console.log(socket);
socket.on('connect', function(){
alert(socket.id); // 'G5p5...
});
socket.on('connect_error', function(){
console.log('Connection Failed');
});
我總是得到「連接失敗」在瀏覽器控制檯
我從安全組的入站部分打開的端口,當我使用:
telnet ec2-MY-IP.us-west-2.compute.amazonaws.com 3000
它給我輸出
Trying ...
Connected to ec2-MY-IP.us-west-2.compute.amazonaws.com.
Escape character is '^]'.
我的服務器端代碼去這裏:
const express = require('express');
const bodyParser= require('body-parser');
const app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
http.listen(3000,() => {
console.log('listening on 3000');
});
MongoClient.connect('mongodb://ec2-MY-IP.us-west-2.compute.amazonaws.com:27017/userlogsdemo', (err, database) => {
if (err) return console.log(err)
db = database;
console.log("DB CONNECTED")
io.on('connection', function (socket) {
console.log("SOCKET CONNECTED")
socketobj = socket
socket.on('reloadtickets', function (data) {
connectedusers.forEach(function(v){
if(v.connecteduserid == data.target){
setTimeout(function() {
io.emit('reloadticketsok',data);
}, 100)
}
});
});
// WHEN SOMEONE IS DISCONNECTED
});
})
當我運行「節點server.js」它說「數據庫連接」,但不是「SOCKET CONNECTED」。 代碼localhost:8080(在我的本地機器不在aws上)正常工作。在aws Ec2上是否有特別的要求?任何建議將不勝感激。在此先感謝
我認爲問題是與開放的端口。解決了!謝謝! –