websocket 的服务器和 web 客户端

问题描述 投票:0回答:0

你好,我有一个 python 的服务器代码和一个 js 的 web 客户端。我正在尝试使用安全的 websocket。但我不能让他们联系起来。我在这里错过了一些配置吗?是因为我在做ssl吗?因为我被要求使用安全的 websocket 所以我必须添加它。 我的服务器代码:

import asyncio, websockets, functools, ssl, logging
from dotenv import dotenv_values
from server_func import handle_question_wrapper
import nest_asyncio

nest_asyncio.apply()


def initialize():
    config = dotenv_values("../.env")
    ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    ssl_context.load_cert_chain("../server.crt", "../server.key")

    config["ssl_context"] = ssl_context

    return config


async def run(config):
    start_server = websockets.serve(
        functools.partial(handle_question_wrapper, config=config),
        "localhost",
        443,
        ssl=config["ssl_context"],
        ping_interval=None
    )

    start_server.ws_server.check_origin = True
    asyncio.get_event_loop().run_until_complete(start_server)
    asyncio.get_event_loop().run_forever()


if __name__ == "__main__":
    logger = logging.getLogger("websocket_server")
    logging.basicConfig(
        format="%(asctime)s %(levelname)-8s %(message)s", level=logging.INFO, datefmt="%Y-%m-%d %H:%M:%S"
    )
    config = initialize()

    asyncio.run(run(config))

我的网络客户端代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Websocket Client</title>
    <script>
      var ws;

      function connect() {
        ws = new WebSocket("wss://127.0.0.1:443");
        ws.onopen = function () {
          console.log("Websocket connected!");
        };
        ws.onmessage = function (event) {
          console.log("Received message: ", event.data);
        };
      }

      function sendMessage() {
        var message = document.getElementById("message").value;
        ws.send(message);
        console.log("Sent message: ", message);
      }
    </script>
  </head>
  <body onload="connect()">
    <input type="text" id="message" />
    <button onclick="sendMessage()">Send</button>
  </body>
</html>

你介意给点建议吗?

javascript python websocket server client
© www.soinside.com 2019 - 2024. All rights reserved.