Python websocket
时间: 2023-11-05 08:53:18 浏览: 119
WebSocket是一种在客户端和服务器之间建立实时、双向通信的协议。在Python中,可以使用socketio库来实现WebSocket功能。客户端和服务器端都需要使用socketio库来创建WebSocket连接。
在客户端,需要导入socketio库,并创建一个socketio.Client对象。然后,可以使用@sio.on装饰器来定义接收服务器消息的回调函数,使用@sio.event装饰器来定义连接错误和断开连接的回调函数。通过调用sio.connect方法来连接到WebSocket服务器,并使用sio.emit方法来发送消息到服务器。
在服务器端,需要导入socketio库,并创建一个socketio.Server对象。然后,可以使用@sio.event装饰器来定义与客户端交互的回调函数。使用sio.emit方法来向客户端发送消息,使用sio.on装饰器来接收客户端消息。最后,通过调用eventlet.wsgi.server方法来启动服务器。
另外,还可以使用sio.io装饰器来实现WebSocket的接口。使用@sio.event装饰器来定义接收消息的回调函数,使用@sio.io装饰器来定义发送消息的接口。
下面是一个Python WebSocket的示例代码:
客户端:
```
import time
import socketio
num = 1
sio = socketio.Client()
@sio.on('client')
def on_message(data):
global num
print(f'第{num}次发送')
num = 1
time.sleep(1)
print('client received a message!', data)
sio.emit('server', {'message': 'who are you', 'session_id': ''})
@sio.event
def connect_error(info):
print(f"The connection failed: {info}")
@sio.event
def disconnect():
print('disconnected from server')
sio.connect('http://localhost:5000')
```
服务器端:
```
import eventlet
import socketio
sio = socketio.Server()
app = socketio.WSGIApp(sio)
@sio.event
def connect(sid, environ):
print(f'connect: {sid}')
if isinstance(environ, dict):
print('===client information===')
[print(f'{k}: {v}') for k, v in environ.items()]
print('======')
sio.emit('client', {'response': 'connect success'})
@sio.on('server')
def message(sid, data):
print(f'sid: {sid}---serve received a message! {data}')
sio.emit('client', {'response': 'connect success'})
@sio.event
def disconnect(sid):
print('disconnect ', sid)
eventlet.wsgi.server(eventlet.listen(('', 5000)), app)
```
这段代码演示了一个基本的Python WebSocket通信,客户端和服务器端通过socketio库建立了一个双向通信的连接,并可以相互发送消息。
阅读全文