フラスコnginxのgevent-wesocketチャットルーム

WebSocketのチャットルーム

ツールフラスコgevent-のWebSocketのnginxのpython3の使用

先来一段代码`在这里插入代码片
フラスコインポートフラスコから、render_template
geventwebsocket.websocketインポートからのWebSocket、WebSocketError
geventwebsocket.handlerインポートWebSocketHandlerから
gevent.pywsgiインポートてWSGIServerから
フラスコインポート要求から、リダイレクト
キューインポートキューから
LIB1インポートget_keyから
インポート時
のインポートのJSON
輸入_ctypes

アプリ=フラスコ(
user_socket_dict3 = {}
@ app.route( '/ WS / chat_room / <room_id>')
DEF(room_id)はWS:
いない場合send_msg_queue_dict.get(room_id):
send_msg_queue_dict [room_id] =キュー()
user_socket = request.environ.get(「wsgi.websocket」)
でない場合user_socket:
リターン「请以のWebSocket方式连接」
のuser_agent = request.user_agent
REMOTE_ADDR = request.remote_addr
キー= get_key(STR(user_agentの)+ STR(REMOTE_ADDR))
USER_NAME = r.get(キー)
user_socket_dict3 [USER_NAME] = user_socket
真しばらく:
試してみてください。

        socket_list = []
        send_msg_queue = send_msg_queue_dict.get("room_id")
        cot = send_msg_queue.get()
        if not cot:
            continue
        msg = cot.get("msg")
        from_user = cot.get("from_user")
        room_id = cot.get("room_id")
        if room_id == "main":
            members = r.get("on_line_user")
        else:
            members = r.get(room_id)
        data = {"from_user": from_user, "contains": msg}
        for member in members:
            socket_list.append(user_socket_dict3.get(member))
        for socket_user in socket_list:
            socket_user.send(json.dumps(data))

        user_msg = json.loads(user_msg)
    except EnvironmentError as e:
        print(e)

もし名前 ==「メイン」:

http_serve=WSGIServer(("0.0.0.0",8070),app,handler_class=WebSocketHandler)
http_serve.serve_forever()

`
nginxの設定
に配置された/etc/nginx/nginx.conf
HTTP]タブで追加
地図http_upgrade $ {$ connection_upgrade
デフォルトのアップグレードでは、
''閉じる;
}
/ect/nginx/conf.d/*.conf追加
場所/ WS {
uwsgi_paramsを含む;
proxy_http_version 1.1;#これは本の焦点は、データフォーマットの転送やエラー発生サポートしていない可能性がある
proxy_pass http://127.0.0.1:8070と、
proxy_set_header $ホストホスト;
proxy_set_header Xフォワード-FOR-$ proxy_add_x_forwarded_for;
proxy_set_header $ http_upgradeアップグレード;
proxy_set_header接続は、「アップグレード」;
}
その後、私たちのconfigure nginxのサービスは、フラスコサービスを開始し、サービスへのアクセスは、nginxので
教えるように多くの彼のようなバグ
私の最初のブログの技術を記念して###

出版元の記事 ウォンの賞賛0 ビュー47

おすすめ

転載: blog.csdn.net/qq_26600467/article/details/104501400