如何使用 JSON 通过 websocket 发送 Django 数据?



我正在开发一个通过websocket发送数据的django应用程序

我正在将数据放入一个 java 对象中,该对象被转换为 JSON,然后在另一端解析

我的代码是

chatSocket.onmessage = function(e) {
console.log(e)
const data = JSON.parse(e.data);
};
document.querySelector('#chat-message-submit').onclick = function(e) {
const messageInputDom = document.querySelector('#chat-message-input');
const message = messageInputDom.value;
var messageObject = {
'username': username,
'message': message,
'test': 'abc',
}
console.log(messageObject)
chatSocket.send(JSON.stringify(messageObject));
};

消息对象似乎格式正确

{username: "jeff", message: "qwerty", test: "abc"}

但是onmessage函数中的输出仅显示

MessageEvent {isTrusted: true, data: "{"message": "qwerty"}", origin: "ws://192.168.1.138:8000", lastEventId: "", source: null, …}

我的其他数据去哪儿了?

这里的问题似乎是我使用的 django 代码要求在名为message 的变量中传输数据。这是一个典型的案例...一点知识...

我熟悉Python,但对javascript很陌生。因此,当我遇到问题时,我认为问题出在我的javascript中,并没有看得更远。

consumers.py

...
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
...
# Receive message from room group
async def chat_message(self, event):
message = event['message']
...

以下代码解决了该问题:

chatSocket.onmessage = function(e) {
const data = JSON.parse(e.data);
messageObject = data.message
username = messageObject.username
text = messageObject.text
};
document.querySelector('#chat-message-submit').onclick = function(e) {
const messageInputDom = document.querySelector('#chat-message-input');
const text = messageInputDom.value;
var messageObject = {
'message': {'username': username, 'text': text, 'test': 'abc'},
}
chatSocket.send(JSON.stringify(messageObject));
};

最新更新