用于连续串行数据流的带flask和vue的Python套接字
因此,我有一个flask应用程序,它由用于连续串行数据流的带flask和vue的Python套接字,python,sockets,flask,Python,Sockets,Flask,因此,我有一个flask应用程序,它由flask\u socketio包扩展 我目前有一个vue前端,它连接到一个插座 现在,套接字连接的输出如下所示: 我还在flask应用程序的终端中看到一个连接: 127.0.0.1---[2019年8月23日21:07:11]“GET/socket.io/?EIO=3&transport=polling&t=mou u1wR HTTP/1.1”200 但是,我的代码中有这样一条信息:当套接字连接时,应该启动一个whiletrue线程,以继续接收数据 这是
flask\u socketio
包扩展
我目前有一个vue前端,它连接到一个插座
现在,套接字连接的输出如下所示:
我还在flask应用程序的终端中看到一个连接:
127.0.0.1---[2019年8月23日21:07:11]“GET/socket.io/?EIO=3&transport=polling&t=mou u1wR HTTP/1.1”200
但是,我的代码中有这样一条信息:当套接字连接时,应该启动一个whiletrue
线程,以继续接收数据
这是我的代码:
from flask import Flask, jsonify
from flask_socketio import SocketIO, send, emit
import threading
from threading import Lock
import time
import controllers.gpsController
# configuration
DEBUG = True
# instantiate the app
app = Flask(__name__)
app.config.from_object(__name__)
thread = None
thread_lock = Lock()
async_mode = None
# app.config['SECRET_KEY'] = 'secret!'
# enable CORS
socketio = SocketIO(app, cors_allowed_origins='*', async_mode=async_mode)
def activate_gps():
ser = controllers.gpsController.open_serial_connection()
while True:
data = controllers.gpsController.readGPS(ser)
if data != None:
socketio.emit('fetch_gps_data', data, broadcast=True)
socketio.sleep(0.1)
# Use sockets here
@socketio.on('connect')
def start_get_data_thread():
global thread
with thread_lock:
if thread is None:
thread = socketio.start_background_task(target=activate_gps)
if __name__ == '__main__':
socketio.run(app, host='127.0.0.1', port=12345)
有人知道我做错了什么吗?如果我在另一个文件中有te代码activate_gps()
,并调用它,我就会得到想要的输出