2015-07-19 65 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');