2015-07-19 69 views
2

我读过OpenShift在端口8080服务器端监听。我也读过他们强制网络套接字连接到端口8000客户端。OpenShift上的Socket.io和节点

无处有我读,我必须要提到的8000端口的服务器端,因为显然OpenShifts apache的反向代理应该航线8000到8080(它是由应用程序来决定它是什么类型的连接?)

我已经读了很多,尝试了一切,我真的无法弄清楚这件事。

当在8080上收听时,本地主机正常运行,并与客户端的var socket = io();连接。

在OpenShift,请参阅以下内容:

客户端:8000,服务器:8080 运行,并在WS连接,但服务器没有响应。没有.on('connection', ...)要。有道理,没有侦听8000

客户端:8000,服务器:8080,服务器2:8000 试图有2台独立的服务器和(等待端口8080可用时超时)

网站将不建客户端:8000,服务器:8000 网站不会建(同上)

客户:只需连接使用io()服务器:8080 网站运行正常,但回落到XHR长轮询

有谁知道一个简单的tuto rial或使用最新的Socket.io,OpenShift和Express 4的人的例子?最糟糕的部分是,你看到的每个人都以不同的方式启动他们的服务器(不赞成,比我所知道的更新?)。它似乎很简单(甚至广告)的疯狂。

仅供参考:最后一个端口组合,与io();连接,并且在端口8080服务器端监听的过程完美无缺。 OpenShift上的websockets是否有气质?

+0

既然你不显示你的代码,我只能用你的问题“等待端口8080可用时超时”。在OpenShift中,这意味着您正试图绑定到您无权使用的IP地址端口组合。换句话说,如果端口是正确的,你可能试图绑定到OpenShift不允许的0.0.0.0或127.0.0.1。您只能绑定到process.env.OPENSHIFT_NODEJS_IP。 – MartinB

回答

0

与此争夺后位以为我会分享他们使用openshift 3我的设置,6+的NodeJS,表达4和socket.io 1.

充分的信息是低于但只是为了总结一些要点这与我所看到的其他来源不同:

  • 服务器使用端口8080和IP为0.0.0。0
  • 没有必要在客户端或服务器“的WebSocket”
  • 并不需要指定客户端
  • 远程客户端连接端口号务必调整并不只是设置传输选项ws/wss的套接字url,但也是不同的openshift当你为你的nodejsapp创建一个安全的路由

我使用以下服务器代码。注意一些旧物品漂浮似乎表明127.0.0.1作为端口,但它似乎实际上是0.0.0.0上openshift 3

var express = require('express'); 
var app = express(); 

var http = require('http').Server(app); 
var io = require('socket.io').listen(http); 

var port = process.env.PORT || process.env.OPENSHIFT_NODEJS_PORT || 8080; 
var ip_address = process.env.IP || process.env.OPENSHIFT_NODEJS_IP || '0.0.0.0'; 

http.listen(port, ip_address, function(){ 
    console.log("Listening on " + ip_address + ", port " + port); 
}); 

客户端代码,如果你正在试图从连接页面担任关闭openshift节点的应用程序比连接是很容易的..

// works for http or https 
var socket = io.connect(); 

,如果你正试图从远程客户端,那么你只需要提供你的应用程序和使用WS安全或不安全的路线路径连接/ WSS。没有必要指定8000或8443的端口!

// http 
var socket = io.connect('ws://ROUTENAME-APPNAME.regionandstuff.openshiftapps.com'); 

// https 
var socket = io.connect('wss://SECUREROUTENAME-APPNAME.regionandstuff.openshiftapps.com');