相关疑难解决方法(0)

ws和wss之间的区别?

将ws变成wss的程序是什么?

wss是通过普通HTTP进行升级还是wss只能用于HTTPS?

webSocket = new WebSocket("ws://localhost:port/Esv/ocp");
Run Code Online (Sandbox Code Playgroud)

当我把ws改为wss时工作正常

webSocket = new WebSocket("wss://localhost:port/Esv/ocp");
Run Code Online (Sandbox Code Playgroud)

它显示了这个错误:

连接建立错误:net :: ERR_SSL_PROTOCOL_ERROR

websocket java-websocket

31
推荐指数
1
解决办法
2万
查看次数

为什么 django-channels 无法连接到安全的 Websockets wss?

最近我一直在开发一个名为(DBSF - 不要成为一个糟糕的朋友)的应用程序,它的功能有点像facebook,但它会提醒你偶尔与你的朋友互动。我遇到了一个长期无法修复的错误。

该应用程序在我的本地计算机上运行良好,但当我尝试将应用程序部署到 heroku 时遇到一个错误。

该问题与使用 Websockets 和 Django 通道的用户之间的聊天功能有关。这是由 heroku 需要 https 引起的,因此 websocket 也必须是安全的(wss:// 而不是 ws://)。

所以我这样做了,我创建了一个安全的 webSocket,其 url 以 wss:// 开头

这就是错误发生的地方:由于某种原因,asgi.py 文件永远无法建立连接,或者routing.py 文件无法将 websocket 连接到consumer.py 中的正确消费者

以下是我尝试修复该错误的方法:

  1. 在 asgi.py 中,我将 http 更改为 https,或将 websocket 更改为其中之一(websockets、ws wss)
  2. 更改了 settings.py 中的安全设置
  3. 尝试了 websocket url 的不同组合
  4. 使用 daphne 而不是 Django 的开发服务器运行它

这些都没有改变错误,甚至错误消息。

错误消息总是抱怨套接字仍在连接或已经关闭或处于关闭状态

这是一些代码

在浏览器上(为了在本地计算机上重新创建错误,我只是硬编码“wss”):

var ws_scheme = window.location.protocol == "https:" ? "wss" : "ws";
      const chatSocket = new WebSocket(
        ws_scheme
        + '://'
        + window.location.host
        + '/ws/chat/'
        + …
Run Code Online (Sandbox Code Playgroud)

python django websocket django-channels asgi

6
推荐指数
1
解决办法
3771
查看次数