텔넷으로 연결할 수있는 서버 사이드 이벤트 서버를 작성하고 텔넷 컨텐츠를 브라우저에 푸시하려고합니다. 파이썬과 asyncio를 사용하는 배후의 아이디어는 가능한 한 작은 CPU를 사용하여 이것이 Raspberry Pi에서 실행될 수 있도록하는 것입니다.파이썬 - asyncio 프로토콜/서버 간 통신
지금까지 나는 여기에 발견 된 라이브러리를 사용하고 있습니다 : https://pypi.python.org/pypi/asyncio-sse/0.1 asyncio를 사용합니다.
그리고 asyncio도 사용하는 텔넷 서버를 복사했습니다.
둘 다 별도로 작동하지만 두 가지를 서로 묶는 방법을 모릅니다. 내가 이해할 때 SSEHandler
클래스의 send()
을 Telnet.data_received
내부에서 호출해야하지만 액세스 방법을 모르겠습니다. 이 두 '서버'는 새로운 연결을 수락하거나 데이터를 밀어 넣기 위해 루프로 실행되어야합니다.
누구든지 도와 주거나 다른 방향으로 나를 가리킬 수 있습니까? 나는 더 이상 무엇을 해야할지 모르겠다. 무덤에있다. 무엇이 더 이상 google인지 모른다.
import asyncio
import sse
# Get an instance of the asyncio event loop
loop = asyncio.get_event_loop()
# Setup SSE address and port
sse_host, sse_port = '192.168.2.25', 8888
class Telnet(asyncio.Protocol):
def connection_made(self, transport):
print("Connection received!");
self.transport = transport
def data_received(self, data):
print(data)
self.transport.write(b'echo:')
self.transport.write(data)
# This is where I want to send data via SSE
# SSEHandler.send(data)
# Things I've tried :(
#loop.call_soon_threadsafe(SSEHandler.handle_request());
#loop.call_soon_threadsafe(sse_server.send("PAH!"));
def connection_lost(self, esc):
print("Connection lost!")
telnet_server.close()
class SSEHandler(sse.Handler):
@asyncio.coroutine
def handle_request(self):
self.send('Working')
# SSE server
sse_server = sse.serve(SSEHandler, sse_host, sse_port)
# Telnet server
telnet_server = loop.run_until_complete(loop.create_server(Telnet, '192.168.2.25', 7777))
#telnet_server.something = sse_server;
loop.run_until_complete(sse_server)
loop.run_until_complete(telnet_server.wait_closed())
어떻게 그리고 왜, 매우 유용했는지 설명해 주셔서 감사합니다. 나는 그것이 더 많이 배우게 될 것입니다. 샘플 코드가 실행 중이고 필요로하는 기능과 매우 낮은 CPU 기능을 제공합니다. 다시 한 번 감사드립니다. –