Cpt*_*mer 11 django stomp websocket spring-boot django-channels
嘿,我们想使用 Django 来执行 python 代码并使用通道来获取结果。实现了 websockets 无法正常工作的所有内容。如果我尝试从我们的 Angular 前端向 Django 发送一些东西,它工作正常。否则我们的 Spring Boot StompSession Websockets 可以与其他 Spring Boot 应用程序和 Angular 一起正常工作。
但是 Django 3.1.3 和 Spring Boot 2.3.3 没有。此外,使用通道 3.0.2、通道-redis 3.2.0 和 redis 6 的 docker 容器。
我可以从 Django 服务器日志中看到:
WebSocket HANDSHAKING /ws/card-detection/ [127.0.0.1:53209]
i'm in connect method
WebSocket CONNECT /ws/card-detection/ [127.0.0.1:53209]
i'm in receive method
text_data: CONNECT
Run Code Online (Sandbox Code Playgroud)
一旦 websocket 请求进来,它就会被执行。
django 消费者(没有上面记录的打印):
class MyConsumer(WebsocketConsumer):
groups = ["broadcast"]
def connect(self):
self.accept()
def receive(self, text_data=None, bytes_data=None):
self.send(text_data="Hello world!")
def disconnect(self, close_code):
pass
Run Code Online (Sandbox Code Playgroud)
我们从 Spring Boot 发送一个 base64 编码的图像。但其他一切都不起作用。正如你所看到的text_data
仅仅是CONNECT
.
弹簧靴:
WebSocket HANDSHAKING /ws/card-detection/ [127.0.0.1:53209]
i'm in connect method
WebSocket CONNECT /ws/card-detection/ [127.0.0.1:53209]
i'm in receive method
text_data: CONNECT
Run Code Online (Sandbox Code Playgroud)
stomp 会话处理程序让您了解它的外观。它应该进入 afterConnected() 方法,但它永远不会进入任何以下方法:
class MyConsumer(WebsocketConsumer):
groups = ["broadcast"]
def connect(self):
self.accept()
def receive(self, text_data=None, bytes_data=None):
self.send(text_data="Hello world!")
def disconnect(self, close_code):
pass
Run Code Online (Sandbox Code Playgroud)
我们尝试将其更改为 Django 中的异步 websocket,但这并没有改变任何事情。该self.accept
在Django的connect()
方法似乎并不发送响应或春季启动需要去回应。
归档时间: |
|
查看次数: |
340 次 |
最近记录: |