1

我正在尝试在 python 中创建一个在 OpenShift 上正确运行的回显服务器。现在的样子如下:

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()

但是,它似乎不起作用。我没有收到任何错误消息。(客户端除外。)我想知道你们中是否有人可以提供帮助。我一直在寻找一个半星期的解决方案,我真的很疯狂。我也将不胜感激任何工作示例。请注意,由于端口、域限制,来自 Internet 的许多示例无法在 OpenShift 上运行。请帮我解决一下这个。如果您确定您的解决方案,请回答。

4

1 回答 1

0

您将需要连接到特定端口,因为主路由层仍然基于 Apache,并且不支持 WebSockets。

因此,对于普通的 WebSockets ws://,您将使用端口 8000 和安全连接 wss:// 端口 8443。这是一个示例:

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

这是一个很棒的 Python 示例https://github.com/Lawoach/WebSocket-for-Python

于 2014-09-15T17:45:47.863 回答