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