Django频道-握手和;连接,但未执行websocket.Connect函数
我正在做一个django项目,在不同的应用程序中使用不同的频道。第一个应用(从传感器接收数据)有自己的消费者和路由,第二个应用(更新登录用户列表) 在第一个应用程序中,一切正常 在第二个应用程序中,握手已完成,连接已建立,但链接到Django频道-握手和;连接,但未执行websocket.Connect函数,websocket,connection,django-channels,Websocket,Connection,Django Channels,我正在做一个django项目,在不同的应用程序中使用不同的频道。第一个应用(从传感器接收数据)有自己的消费者和路由,第二个应用(更新登录用户列表) 在第一个应用程序中,一切正常 在第二个应用程序中,握手已完成,连接已建立,但链接到websocket.receive的功能未执行 from channels.routing导入路由,路由类 从channels.staticfiles导入StaticFilesConsumer 从users.consumer导入ws\u connect,ws\u dis
websocket.receive的功能未执行
from channels.routing导入路由,路由类
从channels.staticfiles导入StaticFilesConsumer
从users.consumer导入ws\u connect,ws\u disconnect
通道_路由=[
路由('websocket.connect',ws_connect,path=r'^/users/lobb/'),
...
]
以及ws\u connect
导入json
来自频道导入组
从channels.handler导入AsgiHandler
从channels.auth导入频道会话用户,
信道会话用户来自信道http,信道会话
@来自http的通道会话用户
def ws_connect(消息):
打印(‘测试’)
从不执行ws\u connect
的打印('test')
。此外,我在javascript中使用的url结尾也无关紧要
var ws=new-WebSocket('ws://127.0.0.1:8000/users/lobb/');
ws.onopen=函数(){
console.log('connect');
ws.send('connect');
}
javascript的ws
将与../users/
的../users/lobb/
或../lobb/
连接
谢谢你的提示 因为我显然需要50%的声誉才能发表评论,所以我只想回答一下,尽管我不确定这是否适合你
我在复制制作频道的人制作的github multichat项目的部分内容时遇到了同样的问题
我的问题显然是,我拼写的路由有一点错误,因此它没有调用我为该路由设置的正确函数
所以我的建议是,你应该到处检查路线,看看你是否把事情搞砸了。我个人只在检查错误时检查了我的应用程序路由,但它在我的项目文件夹中,我把路由搞乱了
另一件可能会引起这个问题的事情是,你的应用程序中只有一个路由,但在主文件夹中没有。在这种情况下,您需要将另一个应用程序路由包含在您想要的路径中,就像视图一样:
from channels import include
channel_routing = [
include("crypto_chat.routing.websocket_routing", path=r"^/chat/stream/$"),
include("crypto_chat.routing.chat_routing"),
]
应用程序路由:
from channels import route
from .consumers import ws_connect, ws_receive, ws_disconnect, user_offline, user_online, chat_send
websocket_routing = [
route("websocket.connect", ws_connect),
route("websocket.receive", ws_receive),
route("websocket.disconnect", ws_disconnect),
]
chat_routing = [
route("chat.receive", chat_send, command="^send$"),
route("chat.receive", user_online, command="^online$"),
route("chat.receive",user_offline, command="^offline$"),
]
如果这没有帮助,那么我建议您转到github频道页面获取示例,并将两者进行比较。请记住,该项目可能是由一个更成熟的渠道版本(也可能是django)制作的
希望这能有所帮助,正如我所说,我会发表评论,但我不能,因为我的代表显然