Android 从Flask更改为NodeJS或UDP,或者在Flask中使用更多线程来改进通信?
我正在创建一个简单的android应用程序来控制本地网络中桌面的鼠标 我已经找到了如何创建预期行为的方法,有些时候效果很好,但有些时候速度很慢 该应用程序使用截击和JsonObjectRequest与服务器通信。 服务器正在使用Flask和HTTP POST 我在想5件需要改进的事情:Android 从Flask更改为NodeJS或UDP,或者在Flask中使用更多线程来改进通信?,android,node.js,http,flask,udp,Android,Node.js,Http,Flask,Udp,我正在创建一个简单的android应用程序来控制本地网络中桌面的鼠标 我已经找到了如何创建预期行为的方法,有些时候效果很好,但有些时候速度很慢 该应用程序使用截击和JsonObjectRequest与服务器通信。 服务器正在使用Flask和HTTP POST 我在想5件需要改进的事情: 将服务器更改为NodeJS 使用UDP协议,因为我不需要确认 在烧瓶中使用一根以上的螺纹 将Volley更改为OkHttp或其他http库。(也许凌空抽射不是问题,但我可能错了。) 从POST更改为GET(听起来
from flask import Flask, request
import win32api, win32con
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
@app.route("/mouse", methods=['POST'])
def mouse():
x, y = win32api.GetCursorPos()
win32api.SetCursorPos( (x + request.json['x'], y + request.json['y'] ))
if __name__ == '__main__':
app.run(host='0.0.0.0')
在Android中,检测到视图中的触摸和移动后,获取deltaX和deltaY,并以x和y的形式发送到/鼠标。我还限制了每秒请求的最大数量,但效果不好
MouseController.MOUSE_FRAME = 30;
private View.OnTouchListener onMouseTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN){
mouseX = motionEvent.getX();
mouseY = motionEvent.getY();
}
if(motionEvent.getActionMasked() == MotionEvent.ACTION_MOVE) {
Long now = Calendar.getInstance().getTimeInMillis();
if( now - lastTime > (1000/MouseController.MOUSE_FRAME)){
float newX = motionEvent.getX();
float newY = motionEvent.getY();
float deltaX = newX - mouseX;
float deltaY = newY - mouseY;
mouseX = newX;
mouseY = newY;
mouseController.move(deltaX, deltaY);
lastTime = now;
}
}
return true;
}
};
为了解决这个问题,我改为UDP通信 基于这两个教程: Android UDP: Python UDP:
问题解决了,现在行动顺利。是的,就是这么简单。您需要发布Python代码,以便我们提供帮助。可能不需要切换堆栈。如果您正在发送UDP数据包,那么HTTP将无法使用,因此Flask在这方面没有帮助。