尝试让gevent-websocket正常工作,并且没有连接到我的策略服务器以获取Flash规范。我的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:
[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
答案 0 :(得分:2)
readline()方法在这里不起作用,因为Flash发送的'<policy-file-request/>\0'
没有被换行终止。
尝试使用此代替readline()
:
expected = '<policy-file-request>'
s.read(len(expected))