Open s-hamdananwar opened 1 month ago
Latest commit: 196ead69463e969fc7b5b579a840f1cefe10133a
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
Click here to learn what changesets are, and how to add one.
Click here if you're a maintainer who wants to add a changeset to this PR
hey @s-hamdananwar ,
thank you for your contribution, this is an impressive effort!
We'll have to decide internally first whether we want to go down the route of distributing chat message assets via datachannel or maybe in some other form. If we decide that DataChannel usage is the way to go, we'll first come back to this PR.
Hi @lukasIO, thanks for your response! I completely understand, and I look forward to you and your team's decision.
I have been wanting to implement an image upload feature for meet.livekit.io for some time now, and I finally got some time to hack on it! I also think this could be a good example that demonstrates the different use cases of Data Messages.
Currently, this feature would only support image uploading, but I believe down the road it could be expanded to multiple images and/or different file types.
Image Message Sending Architecture
Image Message Receiving Architecture
Another way I considered implementing this feature was to create a new Observable object just for images, but I wasn't sure if that would be too much of an architectural change. I would also have to have two observables handling all incoming messages which maybe is not desired?
Test Findings I tested images with size up to 5MB and although they worked most of the time, I did find some rare instances where packet loss occurs. Images above 8 MB failed due to packet loss almost all the time. I am not sure if this is expected, even when the message mode is set to be reliable. I would love to hear if anyone have any insights on this! I set the maximum file size threshold at 3 MB (for now?) as in my testing, files lesser than 3 MB always went through fine and quick. I also tested concurrent file sending between two users in a room, and that seem to work as expected as well. I would like to probably test this feature with multiple users sending images concurrently to the room.
I would love to hear the team's and the community's thoughts, suggestions, concerns, bugs(if any) and test findings, and would love to make according changes! A sample demo of the feature can be found in this Slack message!