Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
vue_django_test
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
周田
vue_django_test
Commits
7d680efc
Commit
7d680efc
authored
Aug 28, 2023
by
周田
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor:重构 websocket 发送消息相关代码
parent
623cd6a0
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
16 additions
and
13 deletions
+16
-13
consumers.py
chat/consumers.py
+8
-0
mqtt.py
mqtt/mqtt.py
+8
-13
No files found.
chat/consumers.py
View file @
7d680efc
...
@@ -4,6 +4,8 @@ import json
...
@@ -4,6 +4,8 @@ import json
from
asgiref.sync
import
async_to_sync
from
asgiref.sync
import
async_to_sync
from
channels.generic.websocket
import
WebsocketConsumer
from
channels.generic.websocket
import
WebsocketConsumer
from
channels.generic.websocket
import
AsyncWebsocketConsumer
from
channels.generic.websocket
import
AsyncWebsocketConsumer
from
channels.layers
import
get_channel_layer
from
asgiref.sync
import
async_to_sync
# sync code
# sync code
...
@@ -79,3 +81,9 @@ class ChatConsumer(AsyncWebsocketConsumer):
...
@@ -79,3 +81,9 @@ class ChatConsumer(AsyncWebsocketConsumer):
# await self.send(bytes_data=message)
# await self.send(bytes_data=message)
def
send_websocket_message
(
message
,
group_name
=
"chat_mqtt"
):
channel_layer
=
get_channel_layer
()
async_to_sync
(
channel_layer
.
group_send
)(
group_name
,
{
"type"
:
"chat.message"
,
"message"
:
message
}
)
mqtt/mqtt.py
View file @
7d680efc
import
paho.mqtt.client
as
mqtt
import
paho.mqtt.client
as
mqtt
from
django.conf
import
settings
from
django.conf
import
settings
from
.utils
import
parse_proto
from
.utils
import
parse_proto
from
chat.consumers
import
send_websocket_message
# *******************************************************
from
channels.layers
import
get_channel_layer
,
channel_layers
from
asgiref.sync
import
async_to_sync
def
send_websocket_message
(
message
,
group_name
=
"chat_mqtt"
):
channel_layer
=
get_channel_layer
()
async_to_sync
(
channel_layer
.
group_send
)(
group_name
,
{
"type"
:
"chat.message"
,
"message"
:
message
}
)
# *******************************************************
def
on_connect
(
mqtt_client
,
userdata
,
flags
,
rc
):
def
on_connect
(
mqtt_client
,
userdata
,
flags
,
rc
):
if
rc
==
0
:
if
rc
==
0
:
print
(
'Connected successfully'
)
print
(
'Connected successfully'
)
...
@@ -33,6 +21,13 @@ def on_message(mqtt_client, userdata, msg):
...
@@ -33,6 +21,13 @@ def on_message(mqtt_client, userdata, msg):
data
=
parse_proto
(
msg
.
payload
)
data
=
parse_proto
(
msg
.
payload
)
# data = msg.payload.decode('utf-8')
# data = msg.payload.decode('utf-8')
print
(
f
'Received message on topic: {msg.topic} with payload: {data}'
)
print
(
f
'Received message on topic: {msg.topic} with payload: {data}'
)
send_message
(
data
)
def
send_message
(
data
:
dict
):
"""
发送 websocket 消息
"""
send_websocket_message
(
data
)
send_websocket_message
(
data
)
if
data
[
'CMDS'
][
0
]
==
'$'
:
if
data
[
'CMDS'
][
0
]
==
'$'
:
send_websocket_message
(
data
,
group_name
=
"chat_acu7m5"
)
send_websocket_message
(
data
,
group_name
=
"chat_acu7m5"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment