Node.js 通过php gear从托管的客户端连接到socket.io?-openshift

Node.js 通过php gear从托管的客户端连接到socket.io?-openshift,node.js,socket.io,openshift,Node.js,Socket.io,Openshift,我正在尝试做一些相对简单的事情,至少是为了让事情开始。我有两个gear托管在openshift上,一个php-5.4和一个node.jsgear。我的客户端文件是从PHPGear托管的,但我正在尝试设置一个到节点服务器的socket.io连接 我意识到这会带来CORS问题 我尝试过在(许多)其他事情中更新标题,但运气不好。为了测试,我只使用socket.io 我不断地发现这个错误: GET http://www.domain.com/socket.io/?EIO=3&transport=

我正在尝试做一些相对简单的事情,至少是为了让事情开始。我有两个gear托管在openshift上,一个php-5.4和一个node.jsgear。我的客户端文件是从PHPGear托管的,但我正在尝试设置一个到节点服务器的socket.io连接

我意识到这会带来CORS问题 我尝试过在(许多)其他事情中更新标题,但运气不好。为了测试,我只使用socket.io

我不断地发现这个错误:

GET http://www.domain.com/socket.io/?EIO=3&transport=polling&t=1416040246016-0 404 (Not Found)`
如果我从通过express托管的index.html文件进行连接,它确实可以工作

我对node比较陌生,所以如果我在如何处理这个问题的假设中犯了一些错误,请原谅

这是代码

服务器端:

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

var server = function(){

var strt = this;

strt.setHeaders = function(){

  app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', 'http://www.domain.com:8000,
    http://domain.com:8000, http://node-domain.rhcloud.com:8000');

    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    next();
  });
}

strt.setupVariables = function() {
  strt.ipaddress = process.env.OPENSHIFT_NODEJS_IP;
  strt.port      = process.env.OPENSHIFT_NODEJS_PORT || 3000;

  if (typeof strt.ipaddress === "undefined") {

      console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1');
      strt.ipaddress = "127.0.0.1";
  };
}

strt.createRoutes = function() {

  app.get('/', function(req, res){
    res.sendfile(__dirname + '/index.html');
  });

}

strt.ioServer = function() {
  io.on('connection', function(socket){
    socket.on('chat message', function(msg){
      io.emit('chat message', msg);
    });
  });
}

strt.initializeServer = function() {

  http.listen(strt.port, strt.ipaddress, function(){
    console.log('listening on *:8000');
  });
}

}

var Start = new server();
Start.setHeaders();
Start.setupVariables();
Start.createRoutes();
Start.ioServer();
Start.initializeServer();
<script src="http://node-metagenome.rhcloud.com:8000/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  var socket = io().connect("http://node-domain.rhcloud.com:8000");
  $('form').submit(function(){
    socket.emit('chat message', $('#m').val());
    $('#m').val('');
    return false;
  });
  socket.on('chat message', function(msg){
    $('#messages').append($('<li>').text(msg));
  });
</script>
var socket = io().connect("http://node-domain.rhcloud.com:8000");
var socket = io("http://node-domain.rhcloud.com:8000");
客户端:

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

var server = function(){

var strt = this;

strt.setHeaders = function(){

  app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', 'http://www.domain.com:8000,
    http://domain.com:8000, http://node-domain.rhcloud.com:8000');

    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    next();
  });
}

strt.setupVariables = function() {
  strt.ipaddress = process.env.OPENSHIFT_NODEJS_IP;
  strt.port      = process.env.OPENSHIFT_NODEJS_PORT || 3000;

  if (typeof strt.ipaddress === "undefined") {

      console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1');
      strt.ipaddress = "127.0.0.1";
  };
}

strt.createRoutes = function() {

  app.get('/', function(req, res){
    res.sendfile(__dirname + '/index.html');
  });

}

strt.ioServer = function() {
  io.on('connection', function(socket){
    socket.on('chat message', function(msg){
      io.emit('chat message', msg);
    });
  });
}

strt.initializeServer = function() {

  http.listen(strt.port, strt.ipaddress, function(){
    console.log('listening on *:8000');
  });
}

}

var Start = new server();
Start.setHeaders();
Start.setupVariables();
Start.createRoutes();
Start.ioServer();
Start.initializeServer();
<script src="http://node-metagenome.rhcloud.com:8000/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  var socket = io().connect("http://node-domain.rhcloud.com:8000");
  $('form').submit(function(){
    socket.emit('chat message', $('#m').val());
    $('#m').val('');
    return false;
  });
  socket.on('chat message', function(msg){
    $('#messages').append($('<li>').text(msg));
  });
</script>
var socket = io().connect("http://node-domain.rhcloud.com:8000");
var socket = io("http://node-domain.rhcloud.com:8000");

var socket=io()。连接(“http://node-domain.rhcloud.com:8000");
$('form')。提交(函数(){
emit('chat message',$('#m').val());
$('m').val('');
返回false;
});
socket.on('chat message',函数(msg){
$(“#消息”).append($(“
  • ”).text(msg)); });
  • 好的,我想出来了。这是一个相对较小的变化

    而不是:

    var app = require('express')();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);
    
    var server = function(){
    
    var strt = this;
    
    strt.setHeaders = function(){
    
      app.use(function (req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', 'http://www.domain.com:8000,
        http://domain.com:8000, http://node-domain.rhcloud.com:8000');
    
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
        next();
      });
    }
    
    strt.setupVariables = function() {
      strt.ipaddress = process.env.OPENSHIFT_NODEJS_IP;
      strt.port      = process.env.OPENSHIFT_NODEJS_PORT || 3000;
    
      if (typeof strt.ipaddress === "undefined") {
    
          console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1');
          strt.ipaddress = "127.0.0.1";
      };
    }
    
    strt.createRoutes = function() {
    
      app.get('/', function(req, res){
        res.sendfile(__dirname + '/index.html');
      });
    
    }
    
    strt.ioServer = function() {
      io.on('connection', function(socket){
        socket.on('chat message', function(msg){
          io.emit('chat message', msg);
        });
      });
    }
    
    strt.initializeServer = function() {
    
      http.listen(strt.port, strt.ipaddress, function(){
        console.log('listening on *:8000');
      });
    }
    
    }
    
    var Start = new server();
    Start.setHeaders();
    Start.setupVariables();
    Start.createRoutes();
    Start.ioServer();
    Start.initializeServer();
    
    <script src="http://node-metagenome.rhcloud.com:8000/socket.io/socket.io.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      var socket = io().connect("http://node-domain.rhcloud.com:8000");
      $('form').submit(function(){
        socket.emit('chat message', $('#m').val());
        $('#m').val('');
        return false;
      });
      socket.on('chat message', function(msg){
        $('#messages').append($('<li>').text(msg));
      });
    </script>
    
    var socket = io().connect("http://node-domain.rhcloud.com:8000");
    
    var socket = io("http://node-domain.rhcloud.com:8000");
    
    应该是:

    var app = require('express')();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);
    
    var server = function(){
    
    var strt = this;
    
    strt.setHeaders = function(){
    
      app.use(function (req, res, next) {
        res.setHeader('Access-Control-Allow-Origin', 'http://www.domain.com:8000,
        http://domain.com:8000, http://node-domain.rhcloud.com:8000');
    
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
        res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
        next();
      });
    }
    
    strt.setupVariables = function() {
      strt.ipaddress = process.env.OPENSHIFT_NODEJS_IP;
      strt.port      = process.env.OPENSHIFT_NODEJS_PORT || 3000;
    
      if (typeof strt.ipaddress === "undefined") {
    
          console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1');
          strt.ipaddress = "127.0.0.1";
      };
    }
    
    strt.createRoutes = function() {
    
      app.get('/', function(req, res){
        res.sendfile(__dirname + '/index.html');
      });
    
    }
    
    strt.ioServer = function() {
      io.on('connection', function(socket){
        socket.on('chat message', function(msg){
          io.emit('chat message', msg);
        });
      });
    }
    
    strt.initializeServer = function() {
    
      http.listen(strt.port, strt.ipaddress, function(){
        console.log('listening on *:8000');
      });
    }
    
    }
    
    var Start = new server();
    Start.setHeaders();
    Start.setupVariables();
    Start.createRoutes();
    Start.ioServer();
    Start.initializeServer();
    
    <script src="http://node-metagenome.rhcloud.com:8000/socket.io/socket.io.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
    <script>
      var socket = io().connect("http://node-domain.rhcloud.com:8000");
      $('form').submit(function(){
        socket.emit('chat message', $('#m').val());
        $('#m').val('');
        return false;
      });
      socket.on('chat message', function(msg){
        $('#messages').append($('<li>').text(msg));
      });
    </script>
    
    var socket = io().connect("http://node-domain.rhcloud.com:8000");
    
    var socket = io("http://node-domain.rhcloud.com:8000");
    
    我也不需要设置标题