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

使用Python编写的简易socketio服务器

发布时间:2023-12-14 00:49:18

下面是使用Python编写的简易SocketIO服务器的例子:

import socketio

# 创建一个SocketIO服务器实例
sio = socketio.Server()

# 定义事件处理函数
@sio.on('message')
def handle_message(sid, data):
    print('收到来自客户端的消息:', data)
    # 发送回应给客户端
    sio.emit('message', '服务器回应: ' + data, room=sid)

@sio.on('connect')
def handle_connect(sid, environ):
    print('新的连接:', sid)
    # 发送欢迎消息给新连接的客户端
    sio.emit('message', '欢迎进入聊天室!', room=sid)

@sio.on('disconnect')
def handle_disconnect(sid):
    print('连接断开:', sid)

# 创建一个应用实例
app = socketio.WSGIApp(sio)

if __name__ == '__main__':
    # 启动服务器
    eventlet.wsgi.server(eventlet.listen(('', 5000)), app)

使用该服务器的示例:

<!DOCTYPE html>
<html>
<head>
    <title>SocketIO聊天室</title>
    <script src="https://cdn.socket.io/3.1.0/socket.io.js"></script>
    <script>
        // 创建SocketIO客户端实例
        var socket = io();

        // 监听服务器消息
        socket.on('message', function(data) {
            console.log('收到来自服务器的消息:', data);
            var messageElement = document.createElement('p');
            messageElement.textContent = data;
            document.getElementById('messages').appendChild(messageElement);
        });

        // 发送消息给服务器
        function sendMessage() {
            var message = document.getElementById('message').value;
            socket.send(message);
        }
    </script>
</head>
<body>
    <h1>SocketIO聊天室</h1>
    <div id="messages"></div>
    <input type="text" id="message" placeholder="输入消息">
    <button onclick="sendMessage()">发送</button>
</body>
</html>

使用例子中的服务器是基于Python的SocketIO库编写的。它创建了一个SocketIO服务器实例,并定义了三个事件处理函数:handle_message用于处理客户端发送的消息,handle_connect用于处理客户端连接事件,handle_disconnect用于处理客户端断开连接事件。在handle_message函数中,服务器接收到客户端发送的消息后,将在控制台上打印该消息,并将回应消息发送回客户端。

在HTML页面中,通过socket.io的JavaScript客户端创建了一个SocketIO客户端实例,并通过on函数监听服务器的消息事件。当服务器发送消息时,客户端将在控制台上打印该消息,并将其显示在页面上的messages元素中。通过send函数将输入框中的消息发送给服务器。

你可以在服务器运行后打开多个浏览器窗口,然后在一个窗口中发送消息,其他窗口将会收到服务器的回应消息,并显示在页面上。