我知道quit这里也问过一些类似的问题,但提出的解决方案似乎都不起作用。(我将在下面发布相关答案)
我找不到一个简单的websocket应用程序来处理openshift。该应用程序本身在本地工作。[编辑:我正在使用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=轮询&t=1446734825100-0净::ERR_CONNECTION_TIMED_OUT*
我尝试过的东西
使用端口80而不是8000(在客户端上)
结果:WebSocket连接到"ws://app-domain.rhcloud.com/socket.io/?EIO=2&transport=websocket&sid=rsqAz33O_aYSFfN3AAAD'失败:WebSocket握手期间出错:意外的响应代码:400
交换服务器.list(…和var io=require('…
无结果
使用服务器的ip地址而不是http://app-domain.rhcloud.com
无结果
类似问题
以下问题处理的是同一个问题,但到目前为止,提出的解决方案都不起作用
Socket.io和OpenShift 上的节点
OpenShift NodeJS部署:socket.io index.html端口分配等
无法在openshift 上部署nodejs套接字io应用程序
可以';t使用OpenShift 运行socket.io和nodejs
Socket.io.js在OpenShift 上返回404
此外,我还克隆了socket.io/openshift的一些github示例,但所有这些示例都处理相同的问题。
要么是我做错了什么,要么是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);