【问题标题】:Problem in specifying a path in a websocket server URL在 websocket 服务器 URL 中指定路径时出现问题
【发布时间】:2021-10-27 00:30:48
【问题描述】:

我想在 websocket 服务器的 URL 末尾添加一个路径,但它不起作用。 例如ws://111.111.11.111:8080/websocket。 我想在这样的端口号之后添加 URL 路径/websocket。我该怎么做?

  1. 首先我在客户端测试了ws://111.111.11.111:8080/websocket
  2. 其次,将 URL 更改为 ws://111.111.11.111:8080

结果是都连接到服务器。并显示相同的输出。为什么?不能只在指定/websocket路径的情况下连接吗?我该怎么办?

服务器端代码
import websockets

async def web_server(websocket, path):
    while True:
        publish_to_client = json.dumps(sub.status)
        await websocket.send(publish_to_client)
        await asyncio.sleep(0.1)

if __name__ == "__main__":
    start_server = websockets.serve(web_server, "111.111.11.111", 8080)
    asyncio.get_event_loop().run_until_complete(start_server)
    asyncio.get_event_loop().run_forever()
客户端代码 -> 显示网页
<!DOCTYPE html>
<html>
    <head>
        <title>WebSocket demo</title>
    </head>
    <body>
        <script>
            var ws = new WebSocket("ws://111.111.11.111:8080/websocket"),
                messages = document.createElement('ul');
            ws.onmessage = function (event) {
                var messages = document.getElementsByTagName('ul')[0],
                    message = document.createElement('li'),
                    content = document.createTextNode(event.data);
                message.appendChild(content);
                messages.appendChild(message);
            };
            document.body.appendChild(messages);
        </script>
    </body>
</html>

【问题讨论】:

    标签: python websocket path endpoint serve


    【解决方案1】:

    Python 代码中没有提到路径 "/websocket",所以我不希望它进行您想要的过滤。

    start_server = websockets.serve(web_server, "111.111.11.111", 8080)
    

    服务器绑定了一个 IP 地址和一个端口。无论路径如何,任何传入的 websocket 连接都将被分派到web_server()

    async def web_server(websocket, path):
        ...
    

    此方法处理所有 websocket。它通过了path,它可以随心所欲地使用该信息。您编写的方法不检查path 变量,因此只要IP 地址和端口正确,它将处理任何路径的请求。

    如果您只想接受某些路径,那么您需要自己实现该逻辑。检查path 并按照您想要的任何逻辑接受或拒绝它们。

    【讨论】:

    • 谢谢!我工作!我添加了---> if path == "/ws": 在发送数据之前。
    猜你喜欢
    • 2011-07-31
    • 2021-09-05
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多