【问题标题】:Pass arguments to websocket in Django在 Django 中将参数传递给 websocket
【发布时间】:2021-07-16 18:18:32
【问题描述】:

使用 websockets 时,如何将参数从浏览器传递到服务器端? 当浏览器发出 WS 请求时,我想从服务器返回 Hello。应从客户端传递。


JavaScript 在浏览器中运行。

var socket = new WebSocket('ws://<IP>:80/ws/hello/');
        socket.onmessage = function(event){
        var data = JSON.parse(event.data);
         console.log(data);
}

routing.py

from django.urls import path
from .consumers import *

ws_urlpatterns = [
    path('ws/hello/', Hello.as_asgi())
]

消费者.py

from channels.generic.websocket import WebsocketConsumer
class Hello(WebsocketConsumer):
    def connect(self):
        self.accept()
        self.send(json.dumps({'message':"Hello, <NAME>!"}))

如何将 NAME 替换为客户的姓名?

我可以在 JavaScript 代码中使用

var socket = new WebSocket('ws://<IP>:80/ws/hello/?<NAME>');

当我这样做时,如何将名称传递给 consumer.py 中的 Hello 类,我应该在 routing.py 中添加一些特殊的东西吗?

【问题讨论】:

    标签: javascript python django websocket


    【解决方案1】:

    要将数据发送到 websocket 服务器,您想使用socket.send('string to send')

    见:https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications#sending_data_to_the_server

    无需编辑 websocket 连接 URI。

    要更改 NAME,只需将字符串的那部分设置为 python 变量,然后将该变量的值更改为您想要的任何值。

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 2020-04-13
      • 2014-12-19
      • 2015-11-05
      • 2019-12-29
      • 1970-01-01
      相关资源
      最近更新 更多