uwsgi 및 웹 소켓과의 긴밀한 연결

기묘한

uWSGI를 사용하는 기본 WebSocket 애플리케이션이 있다고 가정 해 보겠습니다.

def application(env, res):
    uwsgi.websocket_handshake(env["HTTP_SEC_WEBSOCKET_KEY"], env.get("HTTP_ORIGIN", ""))
    while True:
        msg = uwsgi.websocket_recv()
        uwsgi.websocket_send("OK: " + msg)

클라이언트를 우아하게 닫으려면 어떻게해야합니까? 예를 들어 내가 할 때

def application(env, res):
    uwsgi.websocket_handshake(env["HTTP_SEC_WEBSOCKET_KEY"], env.get("HTTP_ORIGIN", ""))
    while True:
        msg = uwsgi.websocket_recv()
        if msg == "exit":
            break
        uwsgi.websocket_send("OK: " + msg)

이것은 작동하는 것 같지만 나는 받는다.

TypeError: 'NoneType' object is not iterable

uWSGI에서는 application(...)HTTP (호환성 ??) 에서처럼 반복을 시도하기 때문에 이해할 수 있습니다 . yield None마지막에 추가 한 것을 피하기 위해 :

def application(env, res):
    uwsgi.websocket_handshake(env["HTTP_SEC_WEBSOCKET_KEY"], env.get("HTTP_ORIGIN", ""))
    while True:
        msg = uwsgi.websocket_recv()
        if msg == "exit":
            break
        uwsgi.websocket_send("OK: " + msg)
    yield None

오류를 수정하지만 불쾌한 해킹처럼 보입니다. 게다가 내가 알지 못하는 몇 가지 부작용이있을 수 있습니다 (uWSGI가 클라이언트에 무언가를 보내나요 ??). 아니면 내가 틀렸나 요?

그렇다면 이것을 올바르게 처리하는 방법은 무엇입니까?

로베르토

다만

return ['']

클라이언트에 추가 데이터를 보내지 않고도 WSGI를 완전히 준수하게됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

uWSGI 및 gevent 영구 네트워크 소켓 연결

분류에서Dev

순수한 소켓 연결로 웹 사이트에 연결

분류에서Dev

웹 소켓 연결이 Apache 및 Ratchet으로 실패합니다.

분류에서Dev

Linux http_proxy env vars 및 Firefox 웹 소켓 연결

분류에서Dev

heroku의 각 SocketIoConfig 웹 소켓 연결

분류에서Dev

jetty 웹 서버를 사용한 웹 소켓 보안 연결 문제

분류에서Dev

localhost에서 보내고 받기위한 두 개의 별도 웹 소켓 연결 만들기

분류에서Dev

Kubernetes 수신 웹 소켓 연결 문제

분류에서Dev

Laravel의 방송 및 웹 소켓 문제

분류에서Dev

dart : io 및 dart : html의 Dart 웹 소켓

분류에서Dev

Python의 요청 세션에서 웹 소켓 연결 만들기

분류에서Dev

별도의 기능에서 웹 소켓 연결 해제

분류에서Dev

webpack-dev-server 내의 프록시 웹 소켓 연결

분류에서Dev

하나의 URL에서만 웹 소켓 연결 허용

분류에서Dev

Azure 웹앱 및 웹 작업에 대한 다른 연결 문자열

분류에서Dev

uWSGI 지연 앱 및 ThreadPool

분류에서Dev

소켓 IO는 웹 소켓을 설정 한 후에도 계속 연결됩니다.

분류에서Dev

Netty SSL 및 웹 소켓

분류에서Dev

Delphi-웹 소켓 및 uniGUI

분류에서Dev

클라이언트-서버를 웹 소켓과 연결할 수 없습니다.

분류에서Dev

신속한 소켓 연결

분류에서Dev

uWSGI 및 Pyramid와 고유 한 SQLAlchemy 데이터베이스 연결을 보장하는 방법

분류에서Dev

외부 연결을위한 Apache 및 Nginx의 폴더 비밀번호

분류에서Dev

Nginx 및 uwsgi 연결이 별도의 Docker 컨테이너에 배치 될 때 거부 됨

분류에서Dev

Android에서 소켓 연결 및 분리

분류에서Dev

Python과 TCL 간의 소켓 연결

분류에서Dev

Python 2.x에서 한 번에 여러 원시 소켓 연결 및 처리

분류에서Dev

간단한 웹 양식 자동 완성 및 결과 검색

분류에서Dev

TCP 소켓에서 긴 연결

Related 관련 기사

  1. 1

    uWSGI 및 gevent 영구 네트워크 소켓 연결

  2. 2

    순수한 소켓 연결로 웹 사이트에 연결

  3. 3

    웹 소켓 연결이 Apache 및 Ratchet으로 실패합니다.

  4. 4

    Linux http_proxy env vars 및 Firefox 웹 소켓 연결

  5. 5

    heroku의 각 SocketIoConfig 웹 소켓 연결

  6. 6

    jetty 웹 서버를 사용한 웹 소켓 보안 연결 문제

  7. 7

    localhost에서 보내고 받기위한 두 개의 별도 웹 소켓 연결 만들기

  8. 8

    Kubernetes 수신 웹 소켓 연결 문제

  9. 9

    Laravel의 방송 및 웹 소켓 문제

  10. 10

    dart : io 및 dart : html의 Dart 웹 소켓

  11. 11

    Python의 요청 세션에서 웹 소켓 연결 만들기

  12. 12

    별도의 기능에서 웹 소켓 연결 해제

  13. 13

    webpack-dev-server 내의 프록시 웹 소켓 연결

  14. 14

    하나의 URL에서만 웹 소켓 연결 허용

  15. 15

    Azure 웹앱 및 웹 작업에 대한 다른 연결 문자열

  16. 16

    uWSGI 지연 앱 및 ThreadPool

  17. 17

    소켓 IO는 웹 소켓을 설정 한 후에도 계속 연결됩니다.

  18. 18

    Netty SSL 및 웹 소켓

  19. 19

    Delphi-웹 소켓 및 uniGUI

  20. 20

    클라이언트-서버를 웹 소켓과 연결할 수 없습니다.

  21. 21

    신속한 소켓 연결

  22. 22

    uWSGI 및 Pyramid와 고유 한 SQLAlchemy 데이터베이스 연결을 보장하는 방법

  23. 23

    외부 연결을위한 Apache 및 Nginx의 폴더 비밀번호

  24. 24

    Nginx 및 uwsgi 연결이 별도의 Docker 컨테이너에 배치 될 때 거부 됨

  25. 25

    Android에서 소켓 연결 및 분리

  26. 26

    Python과 TCL 간의 소켓 연결

  27. 27

    Python 2.x에서 한 번에 여러 원시 소켓 연결 및 처리

  28. 28

    간단한 웹 양식 자동 완성 및 결과 검색

  29. 29

    TCP 소켓에서 긴 연결

뜨겁다태그

보관