Comments (12)
Do you know anything about aiortc? Can I use that in django/django-channels and make a django app with P2P video chat + screensharing? I am a bit out of my depth, any tip would help.
from channels.
I'm open to adding support for WebRTC as well - the design of channels is explicitly about supporting any kind of bidirectional protocol - but it's definitely not going to replace WebSockets as the one we write first and encourage for tutorials; they're much more ubiqutous, simpler to understand and communicate to developers, there's plenty of code and test suites in multiple languages for handling them, and the challenges in scaling up the serving of them is well-understood.
I'm going to close this mostly because if I left an issue open for every protocol we might be able to support (you could theoretically also serve FTP, DNS, SMTP and more over Channels, though those are less useful), it would get messy. Rest assured, if there's people interested in making an interface server for WebRTC happen, it's not too hard to add that into the stack mixed in with other protocols.
from channels.
Does your concept of channels also support "any bidirectional protocol with backpressure"? Because for any serious scaling to happen you do need backpressure. Otherwise you have only messaging, not really channels. Websockets do not support backpressure, WebRTC does.
from channels.
Flow control/backpressure is something the interface servers would have to deal with; the channel protocol itself is simplistic on purpose and only does whole message delivery. I'm sure some kind of signalling mechanism could be done to communicate current buffer sizes to the application, but if you need that level of control over communication then channels is likely not for you.
from channels.
Yes, but Websockets does not expose the underlying TCP/SCTP congestion. While WebRTC does through the bufferedamountlow event.
What I would like to see is that the API would expose this to Django. And then maybe on Websockets that would never be triggered, but if the underlying protocol is WebRTC it would.
from channels.
It would be entirely possible to send bufferedamountlow as a channel event to prompt more sending of data - that fits within the abstraction (basically, channels is event-driven by things other than the application code). It's still too complex and specialised to make part of the core project, though; definitely suited to a third-party contribution by someone who has the interest and resources to maintain it.
from channels.
But that event should also get exposed to the application code. So that the code can detect that the messages are not getting through and can back-off. It is not enough just to do that on the transport level.
from channels.
Then WebRTC isn't going to work over the abstraction. The design here is much more about streaming bits of data to lots of clients rather than lots of data, and WebSocket is the thing people are asking for and which has the reasonable API; if we change the abstraction we lose a lot of the scalability (it's limited for some very good reasons, which you can read about in the docs)
from channels.
Still no WebRTC support? :(
from channels.
No, it's not a goal of the Channels project and we don't have the spare people to work on it, sorry! If you'd like it the best thing to do is to gather an interested group and get to work.
from channels.
I'm afraid I don't know anything about it, sorry. I've never ventured into that protocol at all.
from channels.
Sir if you start workiing on integrating WEBRTC support to django channels.. i'd love to work on that with you or anyone else working...
from channels.
Related Issues (20)
- `TEST_CONFIG` key has code using it but seems to be broken and no longer documented HOT 2
- AttributeError: 'NoneType' object has no attribute 'group_add' HOT 1
- OriginValidator could raise exception/log message for denied connections HOT 1
- Unable to collect code coverage when using `ChannelsLiveServerTestCase` HOT 14
- error in channel layer explanations HOT 2
- adding a check if group_name exists method for channel_layer HOT 1
- Small messages are getting concatenated HOT 2
- How can I change the schema in the database? HOT 1
- How to test send_json() contents when passing close=True HOT 2
- Handler declaration by decorator/annotation (in order to prevent potential method leaks) HOT 1
- django-q2 and django-channels together HOT 1
- Channel Layer's group_send() Not Working When Called From Django View HOT 3
- Add CORs middleware HOT 1
- Breakage in routing.py on django/main pre-5.1.
- Use Django async-native APIs where possible HOT 4
- Django Channels Memory Leak on every message or connection HOT 26
- WARNING daphne.server ASGIStaticFilesHandler WebRequest took too long to shut down and was killed HOT 1
- Use group_send() when group is empty HOT 1
- Session Data Corrupted HOT 1
- Error with send_json Function in AsyncJsonWebsocketConsumer HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from channels.