This is actually easy to achieve in Bubble using an approach of having a message table with the sender and recipients recorded, and using the sender and recipient as constraints to the messages that a User can view. Discussed here Chat between two end-users - #2 by lindsay_knowcode and other places in the forum - it’s a common use case for Bubble. Made easy with Bubble’s auto-updating of the UI when there are changes in the data in the database.
If the messages are private you’d also need to implement privacy rules. Plenty of good reference material about privacy rules mentioned in the forum also.
Good luck!