我正在开发一个通过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));
};