多重websocket.receive在Django频道

2024-06-16 15:06:24 发布

您现在位置:Python中文网/ 问答频道 /正文

由于我是websockets的新手,是否可以创建多个websocket.receive针对不同群体的不同消费者的路线?在

app/consumers.py
# First receiver
def ws_receive1(message):
    Group(
       'Group1',
       channel_layer=message.channel_layer
       ).send({'text': "receiver1"})

def ws_receive2(message):
    Group(
       'Group2',
       channel_layer=message.channel_layer
       ).send({'text': "receiver2"})

# routing.py
channel_routing = [
    route("websocket.connect", consumers.ws_connect1),
    route("websocket.disconnect", consumers.ws_disconnect1),
    route("websocket.receive", consumers.ws_receive1),

    route("websocket.connect", consumers.ws_connect2),
    route("websocket.disconnect", consumers.ws_disconnect2),
    route("websocket.receive", consumers.ws_receive2),
]

有什么建议吗?在


Tags: textpysendlayermessagewsdefgroup
1条回答
网友
1楼 · 发布于 2024-06-16 15:06:24

下面是我对上述内容的实现。如需进一步修改,请提出建议。在

#app1/routing.py

from channels.routing import route
from . import consumers

post_websocket = [
    route("websocket.connect", consumers.websocket_connect),
    route("websocket.disconnect", consumers.websocket_disconnect)
]

vote_websocket = [
    route("websocket.connect", consumers.websocket_voteconnect),
    route("websocket.receive", consumers.ws_updatevotes),
    route("websocket.disconnect", consumers.websocket_votedisconnect)
]


# myproject/routing.py
from channels import include

channel_routing = [
    include("app1.routing.post_websocket", path=r"^/app1/post/notification"),
    include("app1.routing.vote_websocket", path=r"^/app1/vote/notification"),
]

您可以在此处找到代码asifpy/channels-examples

相关问题 更多 >