Я не могу получить socket.io, работающий на OpenShift. Спустя несколько часов я поработал в Google, но мне ничего не помогло. Локально он отлично работает (с разными портами и локальным хостом, как конечно).Не удается получить socket.io и nodejs с OpenShift
Это мой server.js файл:
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var ipadr = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
var http = require('http').createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end();
}).listen(port,ipadr);
console.log(port+":"+ipadr);
var io = require('socket.io').listen(http),
fs = require('fs'),
request = require('request'),
mysql = require('mysql'),
moment = require('moment'),
connectionsArray = [],
connection = mysql.createConnection({
host: 'xxx',
user: 'xxx',
password: 'xxx',
database: 'xxx',
port: 3306
}),
POLLING_INTERVAL = 1000,
pollingTimer;
io.on('connection', function(socket){
console.log('a user connected');
});
var updateSockets = function(data) {
// adding the time of the last update
t = new Date();
t = moment().format('H:mm:ss');
console.log('(%s) Connections: %s', t, connectionsArray.length);
// sending new data to all the sockets connected
connectionsArray.forEach(function(tmpSocket) {
tmpSocket.volatile.emit('notification', data);
});
};
console.log('server.js executed\n');
Когда я бегу это на SSH OpenShift он просто показывает первый console.log с моим портом и ipadress из OpenShift и последней строки моего server.js код:
server.js выполнена
и это все. Поэтому я не получаю сообщение «пользователя, подключенного», например, когда я тестирую его локально.
Это, как я хочу подключить в моей стороне клиента .js-файла:
var socket = io.connect('http://njs-uniqo.rhcloud.com:8080/');
браузера (Chrome) Консольные выходы:
> ?s=product&id=10:1 XMLHttpRequest cannot load http://xxx.rhcloud.com:8000/socket.io/?EIO=3&transport=polling&t=1430395459829-1.
> No 'Access-Control-Allow-Origin' header is present on the requested
> resource. Origin 'http://localhost' is therefore not allowed access.
> The response had HTTP status code 503.
Если изменить порт на 8080 на на стороне клиента .js-файл я получаю ERR_CONNECTION_TIMED_OUT:
GET http://xxx.rhcloud.com:8080/socket.io/?EIO=3&transport=polling&t=1430395346761-6 net::ERR_CONNECTION_TIMED_OUT
Затем я получаю сообщение консоли с заголовком «Нет» Access-Control-Allow-Origin »на запрошенном», как упоминалось и цитируется в моем вопросе. –
Я надеюсь, что вы включили cors. Если нет, сделайте это. - http://enable-cors.org/server_expressjs.html https://www.npmjs.com/package/cors – Tejas
Да, я включил cors. Я попытался подключиться к экспресс-модулю и без него (как в моем коде), но получил тот же результат. –