将WebSocket集成到Django Rest框架应用程序的简单方法?

将WebSocket集成到Django Rest框架应用程序的简单方法?,django,amazon-web-services,websocket,django-rest-framework,django-channels,Django,Amazon Web Services,Websocket,Django Rest Framework,Django Channels,我的游戏应用程序使用Vue前端和Django后端以及DRF。多个客户端连接到同一个游戏会话。有时,一些用户做了一些必须同时反映给其他用户的事情。为此,服务器必须具有请求客户端刷新数据的方法 Django应用程序部署在Elastic beanstalk上。典型的游戏会话有10名玩家,更新请求在15秒内发送给玩家一次,我认为在可预见的未来,我们不会有超过50场同时进行的游戏,因此性能要求很低 我正在寻找一个简单的解决方案,将更新请求消息推送到客户端 我当前的解决方案使用运行在ec2上的Redis服务

我的游戏应用程序使用Vue前端和Django后端以及DRF。多个客户端连接到同一个游戏会话。有时,一些用户做了一些必须同时反映给其他用户的事情。为此,服务器必须具有请求客户端刷新数据的方法

Django应用程序部署在Elastic beanstalk上。典型的游戏会话有10名玩家,更新请求在15秒内发送给玩家一次,我认为在可预见的未来,我们不会有超过50场同时进行的游戏,因此性能要求很低

我正在寻找一个简单的解决方案,将更新请求消息推送到客户端

我当前的解决方案使用运行在ec2上的Redis服务器。在Django视图上,当某些内容发生更改时,Django将向Redis发布更新请求:

r = redis.Redis(host=settings.REDIS_IP, port=6379, db=0)
r.publish(game_identifier, type)
“类型”包含应更新哪种数据的信息

此外,我还实现了一个简单的节点应用程序。所有客户端都使用Websocket连接到此应用。该应用程序还向Redis的订阅者发送通知,只要有通知,就会将游戏标识符作为频道发送给订阅者。在此之后,客户机使用REST刷新其状态。节点应用程序也在Elastic Beanstalk上运行

一切都正常,但有一个弹性Beanstalk应用程序和一个ec2实例只用于向客户端发送简单通知,这似乎有些过分。我很想听听如何用较少的移动部件构建这个简单的通知。如果后端是使用Node构建的,我只需要几行代码就可以做到这一点

一些可能性/问题:

  • 用Elasticache替换Redis实例
  • 用Django通道替换节点应用程序
  • 有没有一种完全不用Redis/Elasticache的方法?禁用通道层?(我还不太熟悉频道。)
  • 还有别的吗

为了模块化、可扩展性和可重用性,您最好让通知服务器独立运行。但是如果你坚持使用单台服务器,你可以使用Django通道代替节点服务器,并使用Redis实例作为通道层,这样你就可以将它与DRF应用程序放在同一个代码库中。现在已经有两个LIB集成了DRF和频道。我用这个

嘿,肯,你能看看我的问题吗<代码>https://stackoverflow.com/questions/66731783/django-channels-rest-framework-how-to-get-a-serialized-queryset-to-the-front-en。谢谢