Ответ 1
WebsocketBundle
предоставляет вам просто механизм для записи меньше для связи через сокет. Для настройки чата/группового чата у вас есть несколько вариантов. Первым вариантом может быть использование пакета передачи сообщений и его изменение в соответствии с потребностями. Я нашел этот комплект (https://github.com/FriendsOfSymfony/FOSMessageBundle) очень гибким.
Но если вы хотите разработать свою собственную, вот схема, вдохновленная схемой FOSMessageBundle с некоторой настройкой. Присоединение схемы с таблицами и именами столбцов. Легко идентифицировать из него первичные и внешние ключи.
Остальные вещи довольно прямые, кроме одного поля в таблице Thread
, которая thread_group_hash
. На самом деле целью этого поля является уникальный хэш/ключ для каждого потока. Где поток означает один-один чат или много для многих чатов. В зависимости от того, когда кто-то добавляет людей в чат, пользователи связали с ним IDs
. Я сортирую добавленные идентификаторы пользователей в порядке возрастания или убывания и генерирую ключ md5/sha1 и сохраняю его здесь.
Это также можно использовать как topic
в WebsocketBundle
, потому что используется topic
для той же цели, которую мы пытаемся достичь здесь. Всякий раз, когда одна и та же группа людей добавляется в разговор от одной из сторон, сообщение переходит в тот же поток. Но помните, прежде чем вставлять информацию о потоке/сообщении, вам нужно определить, используя этот хеш, где он принадлежит или это новый поток:)