我想在Openshift 2上使用socket.io 2.0.3和node.js(持续版本),我不能,当我在本地运行时,套接字工作完美,但在openshift中我得到这个错误:< / p>
GET http://tfg-eliasmarnev.rhcloud.com:3000/socket.io/?EIO=3&transport=polling&t=LtWrbEF net::ERR_CONNECTION_TIMED_OUT
这就是代码:
服务器
app.js
var fs = require('fs');
var express = require('express');
var app = express();
var server = require('http').Server(app);
var bodyParser = require ('body-parser');
var jwt = require('jsonwebtoken');
//App configuration
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 3000;
//Websockets con socket.io
var io = require('socket.io')(server);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
//Tanto el puerto como la ip son necesarios para OpenShift,
//de lo contrario intenta enlazar el servidor con la IP 0.0.0.0 y falla
server.listen(server_port, server_ip_address, function () {
console.log( "APP Listening on: " + server_ip_address + ":" + server_port )
});
// Permitir que algunos archivos sean enviados a través de HTTP
app.use(express.static(__dirname + '/'));
// Serve GET on http://domain/
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
//Iniciamos la conexión.
io.on('connection', function (socket) { // Conexiones entrantes de clientes
console.log('Usuario conectado');
//Permanecemos a la escucha del evento coordenada
socket.on('coordenada', function (data) { // listen to the event
io.emit('notificacion', { // emit an event to all connected sockets
Nombre: data.name
});
});
});
客户端
的index.html
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
factory.js
app.factory('socket', ['$rootScope', function($rootScope) {
//var socket = io.connect('http://tfg-eliasmarnev.rhcloud.com:3000/', {'forceNew':true });
//var socket = io.connect();
var socket = io.connect('http://tfg-eliasmarnev.rhcloud.com:3000');
return {
on: function(eventName, callback){
socket.on(eventName, callback);
},
emit: function(eventName, data) {
socket.emit(eventName, data);
}
};
}]);
我不知道这个问题,任何想法?