2017-05-09 82 views
0

您可以在下面的代码中看到它们是两个端口(port1和port2)。它在旧的OpenShift(v2)上运行良好,但我无法在新版本3.5上运行。我如何在新版本上运行此代码。 端口1 - 这是使用的WebSocket, 端口2 - 这是使用HTTP POST请求 来源:https://github.com/hayageek/WhatsApp-Web如何在Openshift上打开两个端口3.5

Object.size = function(obj) { 
    var size = 0, key; 
    for (key in obj) { 
     if (obj.hasOwnProperty(key)) size++; 
    } 
    return size; 
}; 
var ip = process.env.OPENSHIFT_NODEJS_IP; 
var port1  = 8080; 
var port2  = 8081; 



var WebSocketServer = require('ws').Server 
var uuid = require('node-uuid'); 
var wss = new WebSocketServer({ path:'/gencode',port: port1,server:ip }); 


var clients = {}; 
var dumCounter=0; 
wss.on('connection', function connection(ws) { 

    ws.on('message', function incoming(message) { 
    console.log('received: %s', message); 
    var obj = JSON.parse(message); 
    if(obj.op == 'hello') 
    { 
     var uuidToken = uuid.v1(); 
     clients[uuidToken] = ws; 
     var hello = { op:'hello',token:uuidToken}; 
     ws.send(JSON.stringify(hello),{mask:false}); 
    } 

    }); 

}); 



var http = require("http"); 

http.createServer(function(request, response) { 

    response.writeHead(200, {"Content-Type": "text/plain","Access-Control-Allow-Origin":"*"}); 
    process.on('uncaughtException', function(err) { 
      response.end("Exception"); 
    }); 
    if(request.method == "POST") 
    { 
     var url = request.url; 
     if(url == "/auth") 
     { 

     var body = ''; 
     request.on('data', function(chunk) 
     { 
        body += chunk.toString(); 
     }); 

     request.on('end', function() { 
     var params = JSON.parse(body); 
     console.log("Recived Params: "+JSON.stringify(params)); 
      var uuId = params.uuid; 
      var accessToken = params.access_token; 

      var msg = {'op':'authdone','accessToken':accessToken}; 
      if(clients[uuId] != undefined || clients[uuId] != null) 
      { 
       console.log("Before "+Object.size(clients)); 
       clients[uuId].send(JSON.stringify(msg),{mask:false}); 
       delete clients[uuId]; 
       console.log("After "+Object.size(clients)); 

       response.end('{"status":"OK"}'); 

      } 
      else 
      { 
       response.end('{"status":"NOK"}'); 
      } 

      }); 
     } 
     else 
     { 
       response.end('{"status":"NOK"}'); 

     } 
    } 
    else 
    { 
     response.end("NOT Supported"); 
    } 

}).listen(port2,ip); 

回答

0

您可以通过编辑您的部署配置打开其他端口。香港专业教育学院包括以下片段:

"containers": [ { "name": "whatapp-web", "ports": [ { "containerPort": 8080 }, { "containerPort": 8081 } ]

然后,您还需要编辑暴露出该应用程序的服务。从服务定义又如片段:

"ports": [ { "name": "websocket", "port": 8080 }, { "name": "http", "port": 8081 } ]

根据需要这些端点暴露在Internet上创建路线

+0

我真的很抱歉我在OpenShift新的,所以我没有任何想法关于在部署配置和服务中进行编辑。你能帮我吗? –

+0

我会尝试你告诉我的任何事情,但没有任何事情发生。 **规格: 端口: - 名称:8080-TCP 协议:TCP端口 :8080 TARGETPORT:8080 - 名称:8081-HTTP 协议:TCP端口 :8081 TARGETPORT:8081 ** –

+0

如果是您正在使用'oc'命令行工具,然后在项目中运行'oc get dc'和'oc edit dc XYZ',其中XYZ是要编辑的应用程序的部署配置名称。然后用'oc get svc'来编辑服务。它看起来像你可能已经编辑的路线已经 – user2983542