欢迎访问宙启技术站
智能推送

如何使用Python的make_server()模块创建一个简单的WebSocket服务器

发布时间:2023-12-24 07:25:28

要创建一个简单的WebSocket服务器,可以使用Python的make_server()模块。WebSocket是一种在浏览器和服务器之间进行双向通信的协议,可以实时地传输数据。

首先,需要安装websocket库。在命令行中执行以下命令来安装:

pip install websocket

接下来,可以使用以下代码来创建一个简单的WebSocket服务器:

import websocket
from wsgiref.simple_server import make_server

# 定义一个处理WebSocket请求的函数
def websocket_handler(environ, start_response):
    ws = environ["wsgi.websocket"]  # 从环境变量中获取WebSocket对象
    while True:
        message = ws.receive()  # 接收客户端发送的消息
        if message is None:
            break
        ws.send(message)  # 将消息发送回给客户端

# 创建一个WebSocket服务器
websocket_server = make_server('', 8000, server_class=websocket.WSGIServer,
                               handler_class=websocket.WebSocketHandler)
websocket_server.set_app(websocket_handler)

# 启动服务器并监听来自浏览器的连接
print("WebSocket server listening on ws://localhost:8000")
websocket_server.serve_forever()

上述代码中,首先导入了websocketmake_server模块。在代码中定义了一个websocket_handler函数来处理WebSocket请求。在处理函数中,使用environ["wsgi.websocket"]来获取WebSocket对象。然后通过ws.receive()来接收来自客户端的消息,通过ws.send()来将消息发送回给客户端。

接下来,使用make_server函数创建一个WebSocket服务器。 个参数是主机名,可以指定为空字符串表示使用默认的主机名。第二个参数是端口号,这里使用8000。server_class参数指定使用websocket.WSGIServer类来创建服务器对象,handler_class参数指定使用websocket.WebSocketHandler类来处理请求。然后使用set_app方法将处理函数和服务器绑定起来。

最后,使用serve_forever方法来启动服务器并监听来自浏览器的连接。打印出服务器地址和端口号,以便知道服务器在哪里监听连接。

使用命令行运行上述代码后,WebSocket服务器就会开始监听来自浏览器的连接。可以在浏览器中打开一个新的标签页,访问ws://localhost:8000,这样就可以与服务器建立WebSocket连接。可以通过浏览器的开发者工具来查看连接状态和发送/接收的消息。

以下是一个使用WebSocket与服务器进行实时通信的简单示例代码:

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Example</title>
    <script>
        var ws = new WebSocket("ws://localhost:8000");

        ws.onopen = function (event) {
            console.log("WebSocket opened");
        };

        ws.onmessage = function (event) {
            console.log("Received message: " + event.data);
        };

        ws.onclose = function (event) {
            console.log("WebSocket closed");
        };

        function sendMessage() {
            var message = document.getElementById("message").value;
            ws.send(message);
        }
    </script>
</head>
<body>
    <input type="text" id="message" placeholder="Enter message">
    <button onclick="sendMessage()">Send</button>
</body>
</html>

上述代码创建了一个简单的HTML页面,其中有一个文本框和一个按钮。当按钮被点击时,通过WebSocket发送文本框中的消息给服务器。接收到服务器的消息时,会在浏览器的控制台中打印出来。

以上就是使用Python的make_server()模块创建简单的WebSocket服务器的方法,以及一个使用WebSocket与服务器进行实时通信的例子。