2017-05-09 4 views
0

아래 코드에서 두 포트 (port1 및 port2)를 볼 수 있습니다. 그것은 오래 된 OpenShift (v2)에서 잘 실행되었지만 최신 버전 3.5에서는 실행할 수 없습니다. 어떻게이 코드를 최신 버전에서 실행할 수 있습니까? 포트 1 -이 웹 소켓에 사용하고, PORT2는 - 그것은 HTTP POST 요청에 사용할 것입니다 소스 : https://github.com/hayageek/WhatsApp-WebOpenshift 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 } ]

이 경로를 만들기

+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