websocket传送文件
时间: 2023-12-21 13:30:44 浏览: 72
WebSocket是一种在单个TCP连接上进行全双工通信的协议。它可以用于在客户端和服务器之间进行实时通信,包括文件传输。下面是一个简单的WebSocket文件传输的例子:
1. 服务端(Python)代码:
```python
import asyncio
import websockets
async def file_transfer(websocket, path):
try:
async for data in websocket:
with open('received_file', 'wb') as f:
f.write(data)
await websocket.send('File received successfully!')
except websockets.exceptions.ConnectionClosed:
print('Connection closed.')
start_server = websockets.serve(file_transfer, 'localhost', 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
```
2. 客户端(JavaScript)代码:
```javascript
var ws = new WebSocket('ws://localhost:8765');
ws.onopen = function() {
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = function(event) {
var arrayBuffer = reader.result;
ws.send(arrayBuffer);
}
};
ws.onmessage = function(event) {
console.log(event.data);
};
```
在这个例子中,客户端通过WebSocket将文件发送到服务端。服务端接收到文件后,将其保存到本地,并向客户端发送一个确认消息。需要注意的是,这个例子只适用于小文件,如果要传输大文件,需要对文件进行分割,并多次传送。
阅读全文