openshift/nodeJS中的Websocket失败



我知道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);

相关内容

  • 没有找到相关文章

最新更新