Сервер политики с gevent-websocket - PullRequest
5 голосов
/ 28 августа 2011

работает над попыткой заставить работать gevent-websocket, и он не подключается к моему серверу политик для спецификации флэш-памяти.Мой policy.py выглядит следующим образом:

from gevent.server import StreamServer

policy = """<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only"/>
 <allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>\0"""

def handle(sock, address):
s = sock.makefile()
while True:
    msg = s.readline()
    if not msg:
        print("Client disconnected (%s:%s)" % address)
        break
    else:
        sock.sendall(policy)
        print("Client connected, served policy (%s:%s)" % address)

server = StreamServer(('0.0.0.0', 843), handle)
server.serve_forever()

Все же с веб-сокетом я получаю:

[WebSocket] policy file: xmlsocket://localhost:843
[WebSocket] cannot connect to Web Socket server at ws://localhost:8065 (SecurityError: Error #2048) make sure the server is running and Flash socket policy file is correctly placed
[WebSocket] close

1 Ответ

2 голосов
/ 29 августа 2011

метод readline () не будет работать здесь, потому что Flash отправляет '<policy-file-request/>\0', который не завершается символом новой строки.

Попробуйте вместо readline():

expected = '<policy-file-request>'
s.read(len(expected))
...