Как отобразить историю чата в зависимости от выбора комнаты в flask -socketio - PullRequest
0 голосов
/ 09 мая 2020

У меня есть некоторые проблемы: в настоящее время я работаю над приложением чата, используя flask -socketio, на самом деле все работает нормально, но я хочу добавить функциональность, позволяющую пользователям, которые недавно присоединились к комнате, просматривать предыдущие чаты которые были там до того, как они присоединились к комнате, которую они выбрали. Я действительно готов разобраться в logi c функциональности. Ниже то, что я сделал. Проблема в том, как il oop проходит через чаты, которые отправляются во внешний интерфейс, или есть лучший способ сделать это?

@socketio.on('join')
def join(data):
    join_room(data['room'])

    room_name = data['room']

    chats = engine.execute(text(
        """SELECT * FROM chat_history WHERE room = :room_name"""), ({"room_name": room_name},)).fetchall()

    if chats:

        send({'msg': data['username'] + " has joined the " + data['room'] + " room."}, room=data['room'], chats=chats)

1 Ответ

0 голосов
/ 10 мая 2020

Вам необходимо отделить объявление о новом пользователе от истории чата, поскольку объявление отправляется всем в комнате, а история чата только присоединяется к пользователю.

Вы можете продолжить объявлять пользователя с помощью send, но затем используйте emit() со специальным событием для присоединения пользователей, где вы можете включить историю чата в качестве аргумента:

# announce the new user as before
send({'msg': data['username'] + " has joined the " + data['room'] + " room."}, room=data['room'])

# pass chat history to the new user (note there is no room argument on this one)
emit('joined', chats)

Затем в клиенте вы добавляете обработчик для события joined и теперь вы визуализируете свою историю чата.

Надеюсь, это имеет смысл!

...