与python的简单异步双向通信
我正在创建一个应用程序,其中键盘事件应该从服务器发送到客户端,而客户端的键盘事件应该发送回服务器。我曾尝试实现pythonsocket.io,但它似乎不起作用。我想在键盘事件触发某个函数时从一台机器向另一台机器发送消息,然后在一台机器收到另一台机器的消息时运行回调 我目前有这个服务器/客户机代码,客户机连接,但当我从另一个文件调用sendMsg函数时,它打印出sending,但我认为消息实际上没有发送,因为客户机上没有收到任何消息 服务器:与python的简单异步双向通信,python,sockets,networking,python-sockets,python-socketio,Python,Sockets,Networking,Python Sockets,Python Socketio,我正在创建一个应用程序,其中键盘事件应该从服务器发送到客户端,而客户端的键盘事件应该发送回服务器。我曾尝试实现pythonsocket.io,但它似乎不起作用。我想在键盘事件触发某个函数时从一台机器向另一台机器发送消息,然后在一台机器收到另一台机器的消息时运行回调 我目前有这个服务器/客户机代码,客户机连接,但当我从另一个文件调用sendMsg函数时,它打印出sending,但我认为消息实际上没有发送,因为客户机上没有收到任何消息 服务器: from aiohttp import web imp
from aiohttp import web
import socketio
import keylogger
import controller
import threading
sio = socketio.AsyncServer()
app = web.Application()
sio.attach(app)
async def sendMsg(msg):
print("sending")
await sio.emit("response",msg)
async def index(request):
with open('index.html') as f:
return web.Response(text=f.read(), content_type='text/html')
@sio.event
def connect(sid, environ):
print('connect ', sid)
#start keylogger and controller
threading.Thread(target=keylogger.listen,daemon=True).start()
controller.init()
sio.emit("response","ready")
@sio.event
def disconnect(sid):
print('disconnect ', sid)
keylogger.stop()
print("Client is disconnected, please restart server/client connection")
@sio.on('message')
async def print_message(sid, message):
print("Socket ID: " , sid)
print(message)
await sio.emit("response","test")
app.router.add_get('/', index)
if __name__ == '__main__':
print("starting server")
web.run_app(app)
客户:
import time
import socketio
sio = socketio.Client()
@sio.event
def connect():
print('connected to server')
sio.emit("message","connected")
@sio.event
def response(data):
print('res rec', data)
@sio.on("letter")
def letter(data):
print(data)
if __name__ == '__main__':
sio.connect('http://localhost:8080')
sio.wait()
如果有更好/更简单的方法,请使用不同的方法让我知道