openshift / nodeJS 中的 Websocket 失败
Websocket failure in openshift / nodeJS
我知道这里已经问过一些类似的问题,但是 none 的建议解决方案似乎可行。 (下面我会post相关的回答)
我无法获得在 openshift 上运行的简单 websocket 应用程序。该应用程序本身在本地运行。
[编辑:我正在使用 socket.io]
相关代码:
服务器:
var express = require('express');
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io').listen(server);
server.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);
io.on('connection', function (socket) {
…
});
index.html
<script src="/socket.io/socket.io.js"></script>
Client.js
this.socket = io.connect('http://app-domain.rhcloud.com:8000', {'forceNew':true });
结果:
- 获取 http://****-****.rhcloud.com:8000/socket.io/?EIO=2&transport=polling&t=1446734825100-0 net::ERR_CONNECTION_TIMED_OUT *
我试过的东西
use port 80 instead of 8000 (on client)
结果:
与 'ws://app-domain.rhcloud.com/socket.io/?EIO=2&transport=websocket&sid=rsqAz33O_aYSFfN3AAAD' 的 WebSocket 连接失败:WebSocket 握手期间出错:意外的响应代码:400
Interchange server.list(… and var io = require('…
无结果
Use ip address of server instead of http://app-domain.rhcloud.com
无结果
类似问题
以下问题处理的是同一问题,但是 none 的建议解决方案目前有效
Socket.io and node on OpenShift
OpenShift NodeJS deployment : socket.io index.html port assignment, etc
unable to deploy nodejs socket io application on openshift
Socket.io.js returns 404 on OpenShift
我还克隆了一些 github 套接字示例。io/openshift 但它们都处理相同的问题。
要么我做错了什么,要么 openshift 发生了一些有趣的事情。
提前致谢。
终于破解了。显然,通过在服务器端对传输配置进行硬编码,它就可以工作了。
var io = require('socket.io', {
transports: ['websocket']
})(http);
希望这对以后的人有所帮助。
我在 openshift 上使用 socket.io 制作一个简单的聊天应用程序时遇到了同样的问题。我在 Stack Overflow 上查看了很多评论。最后换了两个地方
首先,添加:
app.use(function(req,res,next)
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
next();})
其次,在需要socket.io模块时添加一个选项。
var io = require('socket.io', {
transports: ['websocket']
})(http);
我知道这里已经问过一些类似的问题,但是 none 的建议解决方案似乎可行。 (下面我会post相关的回答)
我无法获得在 openshift 上运行的简单 websocket 应用程序。该应用程序本身在本地运行。 [编辑:我正在使用 socket.io]
相关代码:
服务器:
var express = require('express');
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io').listen(server);
server.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);
io.on('connection', function (socket) {
…
});
index.html
<script src="/socket.io/socket.io.js"></script>
Client.js
this.socket = io.connect('http://app-domain.rhcloud.com:8000', {'forceNew':true });
结果:
- 获取 http://****-****.rhcloud.com:8000/socket.io/?EIO=2&transport=polling&t=1446734825100-0 net::ERR_CONNECTION_TIMED_OUT *
我试过的东西
use port 80 instead of 8000 (on client)
结果: 与 'ws://app-domain.rhcloud.com/socket.io/?EIO=2&transport=websocket&sid=rsqAz33O_aYSFfN3AAAD' 的 WebSocket 连接失败:WebSocket 握手期间出错:意外的响应代码:400
Interchange server.list(… and var io = require('…
无结果
Use ip address of server instead of http://app-domain.rhcloud.com
无结果
类似问题
以下问题处理的是同一问题,但是 none 的建议解决方案目前有效
Socket.io and node on OpenShift
OpenShift NodeJS deployment : socket.io index.html port assignment, etc
unable to deploy nodejs socket io application on openshift
Socket.io.js returns 404 on OpenShift
我还克隆了一些 github 套接字示例。io/openshift 但它们都处理相同的问题。
要么我做错了什么,要么 openshift 发生了一些有趣的事情。
提前致谢。
终于破解了。显然,通过在服务器端对传输配置进行硬编码,它就可以工作了。
var io = require('socket.io', {
transports: ['websocket']
})(http);
希望这对以后的人有所帮助。
我在 openshift 上使用 socket.io 制作一个简单的聊天应用程序时遇到了同样的问题。我在 Stack Overflow 上查看了很多评论。最后换了两个地方
首先,添加:
app.use(function(req,res,next)
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
next();})
其次,在需要socket.io模块时添加一个选项。
var io = require('socket.io', {
transports: ['websocket']
})(http);