davidstump / SwiftPhoenixClient

Connect your Phoenix and iOS applications through WebSockets!
MIT License
512 stars 147 forks source link

Sending binary data in a message #244

Open msandel6 opened 1 year ago

msandel6 commented 1 year ago

Issue:

I'm trying to send some messages to the server that contain binary data instead of JSON. I might be missing something, but so far it looks to me like the framework doesn't support sending an event with anything other than JSON as a payload.

Possible solution:

I took an initial pass at what might be needed to support sending binary data using the URLSessionWebSocketTask.Message.data(Data) function. Unfortunately, it looks to me like this would require a new/updated implementation of Push because the current one only allows payloads of type [String : Any] to be passed in for transport. Can you think of a more straightforward approach?

I believe sending events with binary data payloads is a pretty commonly used Phoenix feature, so I think this would add general value to the framework. I'll keep working on a possible solution on my end, but curious to hear your thoughts @dsrees.

dsrees commented 1 year ago

Correct, the client does not currently support receiving or sending binary data. Its actually something I've been looking into recently to add. I'll update if I make any progress on this feature

samrat commented 9 months ago

Hi, was there any progress on this issue? My use-case involves sending audio samples so would be great to not have to pay the JSON serialization/deserialization cost.

dsrees commented 9 months ago

@samrat something is in the works. I'll update back here when progress is made

dsrees commented 1 week ago

273 added support to the 6.x branch to push binary data through a channel

channel.binaryPush("event", payload: Data())

6.x is still every much under development and further changes will be coming but let me know if anyone tries it out. I'll post back here when it has been released