Как реализовать индивидуальный чат на SocketIo Flask?

110
31 января 2022, 09:40

Пишу соц.сеть. Как реализовать чат между пользователями тет-а-тет? Точнее: имеется url: user/ - страница пользователя, чат там же. При отправлении запроса через socketio в js, я могу указать url конкретного пользователя ("{{ url_for('user', id_user=user.id) }}"). На стороне сервера, на flask, как мне нужно прописать namespace чтобы запрос со страницы Nого пользователя приходил на Nый сокет? Если прописывать namespace руками (user/2) то все работает, но , понятное дело - только для второго пользователя. Можно ли вообще так сделать? Альтернатива - сделать отдельный url (/chat) куда будут идти все сообщения от всех пользователей. В сообщении передавать id отправителя, доставать из бд все сообщения этого отправителя, и возвращать массивом. Вроде неохота)

Answer 1

Реализовал следующим образом: Js создает 2 сокет-соединения (c url`ами /chat и {{ url_for('user', id_user=user.id) }}. Сокет /chat только отправляет, сокет {{ url_for('user', id_user=user.id) }} только принимает ответы от сервера. На сервере всего одна функция @socketio.on('message') - записывает в бд и возвращает 2 ответа: send(..... namespace = url_for('user', id_user=айди_отправителя) send(.... namespace = url_for('user', id_user=айди_получателя). Айди_отправителя и Айди_получателя отправляются через сокет с клиента вместе с сообщением.

READ ALSO
Как сделать стартовую страницу на динамической дирректории?

Как сделать стартовую страницу на динамической дирректории?

Всем приветВ проекте стоит задача, в котором стартовый URL должен начинаться с абривеатуры языка

113
SyntaxError: Unexpected token 'export'

SyntaxError: Unexpected token 'export'

подскажите как решить проблему с тестами мой основной js (activeBtnClickjs):

180
Проблема с калькулятором вообще ничего не выводит

Проблема с калькулятором вообще ничего не выводит

Написал калькулятор на js, if else он вообще ничего не выводит писал в браузере так что подключать js с css не надо

122