2013-08-27 4 views
1

OpenShift에서 올바르게 실행되는 python으로 echo 서버를 만들려고합니다. 지금 보이는 방법은 다음과 같습니다 :openshift python echo websocket server

from geventwebsocket.handler import WebSocketHandler 
from gevent.pywsgi import WSGIServer 
from flask import Flask, request, render_template 
import os 

app = Flask(__name__) 

@app.route('/a') 
def index(): 
    return render_template('index.html') 

@app.route('/') 
def api(): 
    if request.environ.get('wsgi.websocket'): 
     ws = request.environ['wsgi.websocket'] 
     print ws 
     while True: 
      message = ws.receive() 
      ws.send(message) 
    return 

if __name__ == '__main__': 
    ip = os.environ['OPENSHIFT_PYTHON_IP'] 
    port = int(os.environ['OPENSHIFT_PYTHON_PORT']) 
    print port, ip 
    http_server = WSGIServer((ip,port), app, handler_class=WebSocketHandler) 
    http_server.serve_forever() 

그러나, 작동하는 것 같다하지 않습니다. 어떤 오류 메시지도 표시되지 않습니다. (클라이언트 쪽을 제외하고). 여러분 중 누군가가이 문제를 도울 수 있는지 궁금합니다. 나는 지금 1 년 반 동안 해결책을 찾고 있었고, 나는 정말로 열매를 맺고있다. 나는 또한 어떤 작동 예제를 주시면 감사하겠습니다. 참고 포트, 도메인 제한 때문에 인터넷의 많은 예제가 OpenShift에서 작동하지 않습니다. 이걸 도와주세요. 솔루션에 대한 확신이 있다면 anwser하시기 바랍니다.

답변

0

메인 라우팅 레이어는 여전히 Apache 기반이며 웹 소켓을 지원하지 않으므로 특정 포트에 연결해야합니다.

그래서, 일반 WebSocket을 ws를위한 : // 당신은 포트 8000을 사용하여 보안 연결의 WSS에 대한 것입니다

http://app-lovingwebsockets.rhcloud.com/ <= your current HTTP URL 
http://app-lovingwebsockets.rhcloud.com:8000/ <= WebSockets enables HTTP URL 

https://app-lovingwebsockets.rhcloud.com/ <= your current HTTPs URL 
https://app-lovingwebsockets.rhcloud.com:8443/ <= WebSockets enables HTTPs URL 

여기에 좋은 파이썬 예 https://github.com/Lawouach/WebSocket-for-Python

가있다 : 여기 // 포트 8443는 예입니다