Python websockets:EOFError(“没有CRLF的行”)

d7v8vwbk  于 2023-06-23  发布在  Python
关注(0)|答案(1)|浏览(281)

我已经实现了一个Python Websockets服务器程序示例。
当我通过wss://myserver.com:9000连接到它时,它不工作,我在日志中看到错误EOFError("line without CRLF")

vcudknz3

vcudknz31#

您可能遇到SSL(TLS)问题。
首先,尝试在没有TLS的情况下连接到服务器:使用协议ws而不是wss。如果这起作用,您的问题是缺乏TLS(SSL)支持。修复:
1.确保Python安装支持SSL。
1.创建或获取X.509服务器证书。根据您的WebSocket客户端,您可能可以使用自签名证书。但你通常需要一个真正的证书,它们是免费的LetsEncrypt

  1. pip ssl获取SSL库
    1.将SSL添加到您的启动:
import ssl
...
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain("path/to/fullchain.pem", "path/to/privkey.pem")
...
    server = await websockets.serve(
        on_connect, "", 9000, subprotocols=["ocpp1.6"], ssl=ssl_context
    )

相关问题