2011-08-28 2 views
5

gevent-websocket을 작동 시키려고 노력 중이며 플래시 사양에 대한 내 정책 서버에 연결하지 않습니다. 웹 소켓을 가진 그러나gevent-websocket이있는 Policy Server

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

내가 갖는 : 다음과 같이 내 policy.py이다

[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 

답변

2

플래시가 종료되지 않은 '<policy-file-request/>\0'를 전송하기 때문에 작성한 Readline() 메소드가 여기에 작동하지 않습니다 줄 바꿈.

readline() 대신이 시도 :

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

덕분에, 그 완벽했다! – d0ctor

관련 문제