无法在openshift上部署nodejs socket io应用程序

我有一个基于nodejs和socket io的简单聊天应用程序。 在当地正常工作。 但是我正在面临将它部署到openshift的问题。

我已经阅读并实现了堆栈溢出几乎所有相关的线程。 还没有进展。

客户端(index.html):

<script src="/socket.io/socket.io.js"></script> var socket = io.connect("http://www.abcd.com:8000/"); 

其中“abcd”是openshift应用程序的附加域名。

服务器端(index.js):

 //Express initializes app to be a funciton handler that is to be supplied to the http server later var express = require('express'); var app = express(); // var server = require('http').Server(app); var io = require('socket.io')(server); var mongoose = require('mongoose'); var server_port = process.env.OPENSHIFT_NODEJS_PORT || 3000 var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' //server listening server.listen(server_port, server_ip_address, function(){ console.log('listening on *:'+server_port); }); 

我已经完成了以下工作:

  • 将客户端URL更改为:ws://www.abcd.com:8000 /
  • 用ioreplaceio.connect
  • 将端口切换到80
  • 还有很多其他的东西

错误

  • 如果我离开声明为:var socket = io(); 错误是WebSocket连接到'ws://www.abcd.com/socket.io/?EIO = 3&transport = websocket&sid = tyEDb4eVF0Nz0wb-AAAF'失败:WebSocket握手期间出错:意外的响应代码:400
  • 如果我声明像var socket = io.connect(' http://www.abcd.com:8000/','forceNew':true ); 错误是GET http://www.abcd.com:8000/socket.io/?EIO=3&transport=polling&t=1430395346761-6net :: ERR_CONNECTION_TIMED_OUT

它看起来像我不喜欢你的websockets绑定到IP和端口,你的server.listen之后,试试这个:

 var socket = io.listen(server); 

我在openshift的socket.io和node.js有同样的问题。 我第一次尝试了最新版本的node.js(目前在openshift上是V5)。 但是,当我试图创build0.1版本的新node.js墨盒。 它运行良好。 为了简单起步,我build议你克隆下面的git仓库到你的testing盒: https : //github.com/nodebooks/socketio-openshift-example 。 我相信它会起作用。