Quiero usar matraz_socketio para agregar la función de mensajería en tiempo real a mi web. Mi sitio web tiene una función en la que se agregan mensajes a la tabla de mensajes en mi base de datos de matraz-sqlalchemy. Ahora no puedo entender cómo agregaré un mensaje a la base de datos y al mismo tiempo lo publicaré en el servidor del cliente para que pueda verse instantáneamente, en palabras sencillas, para qué se usa el matraz-socketio (actualización instantánea). La función para agregar mensajes es:
@app.route('/<int:team_id>/<int:channel_id>/<string:channel_name>' , methods=["GET","POST"]) def channel(team_id,channel_id, channel_name): *Irrelevant code* form = MessageForm() if form.validate_on_submit(): message = Messages(msg_cntnt=form.msg_cntnt.data,msg_file =form.picture.data, sender_id=current_user.id) message.parent_channel = _channel_name db.session.add(message) db.session.commit() messages = Messages.query.filter_by(parent_channel=_channel_name).all() return render_template('team.html', _channel=_channel, team=team, channels=channels, team_members_count=team_members_count, form=form, messages=messages)He probado algunas formas de usar el matraz socketio y ninguna funcionó. También intenté cambiar la versión de matraz_socketio de 5.2.0 a 2 y luego a 4, pero no funcionó. ¿Cómo puedo conseguir esto? ¿Cómo puedo agregarle matraz-socketio? NOTA: En mi team.html he hecho:
Puede priorizar la funcionalidad en tiempo real primero y guardarla después de esta manera
def save_message(msg): groupid = group.query.filter(group.groupid == msg["roomid"]).first() save = message(msg["sender"],msg["content"]) db.session.add(save) groupid.message.append(save) db.session.commit() @socketio.on("send_message") def send_message(message): print(message) message["sender"] = current_user.username emit('add_element', message, to = message["roomid"], broadcast = True) save_message(message)Cuando se activa el evento "send_message", actúa como una función normal de emisión de mensajes, pero después de que todo esté hecho (transmisión de mensajes en tiempo real), llama a una función que guarda el mensaje.