使用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函数将输入框中的消息发送给服务器。
你可以在服务器运行后打开多个浏览器窗口,然后在一个窗口中发送消息,其他窗口将会收到服务器的回应消息,并显示在页面上。
