Django套接字中的多路复用如何工作?

时间:2019-03-14 19:33:03

标签: python django websocket multiplexing

我是Web开发这一部分的新手,正试图找出一种创建具有以下基本规范的Web应用程序的方法:

  • user1打开一个带有文本框的页面(可以在其中添加文本的地方),并且在决定执行此操作时会对其进行修改。
    • 如果用户1遇到问题,他可以邀请其他用户2进行输入。
    • 用户2(登录到通道/套接字时)将能够修改该字段,所做的修改将实时显示给用户1,反之亦然。

或者另一个示例是CodeAcademy上的一个房间:

  • 想象一下,我正在学习一种新的编码语言,但是在学习过程中,我危及了它,不得不寻求帮助。
    • 因此,我继续向其他用户寻求帮助。该用户通过WebSocket(或与此相关的东西)访问页面。
    • 用户可以帮助我实时更改代码并添加一些注释,我也可以通过它提出问题(实时交流)

我的问题是:我可以使用Django Channels 2和多路复用开发某些应用程序吗?还是更好地使用NodeJS或与此相关的东西?

Obs:我确实有使用python / django的更多经验,所以正确地知道是否可以找到一种使用此组合的方法,对我来说将更有生产力。

1 个答案:

答案 0 :(得分:1)

This is definitely possible. They will be lots of possibilities, but I would recommend the following.

  1. Have a page with code on. The page has some websocket JS code that can connect to a Channels Consumer.
  2. The JS does 2 simple things. When code is updated code on the screen, send a message to the Consumer, with the new text (you can optimize this later). When the socket receives a message, then replace the code on screen with the new code.
  3. In your consumer, add your consumer to a channel group when connecting (the group will contain all of the consumers that are accessing the page)
  4. When a message is received, use group_send to send it to all the other consumers
  5. When your consumer callback function gets called, then send a message to your websocket