如何在Python和JavaScript之间通过Web进行双向通信?请提供各自语言的示例代码,包括发送和接收消息的部分。
时间: 2025-01-01 08:35:43 浏览: 5
在 Python 和 JavaScript 之间进行双向通信,最常用的方式是通过 AJAX 或 Fetch API 发送 HTTP 请求,以及利用 WebSockets 实现持久化的实时通信。这里分别给出两种情况下的简单示例。
### 使用 AJAX (基于 JavaScript)
这是一个简单的客户端(浏览器)JavaScript 示例,使用 Fetch API 发起 GET 和 POST 请求与服务器交互:
```javascript
// 发送GET请求
fetch('/api/data', {
method: 'GET',
}).then(response => response.json())
.then(data => console.log('Received:', data))
.catch(error => console.error('Error:', error));
// 发送POST请求
const postData = JSON.stringify({ message: 'Hello from JS!' });
fetch('/api/send', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: postData
})
.then(response => response.text())
.then(data => console.log('Response:', data))
.catch(error => console.error('Error:', error));
```
### 使用 WebSockets (Python - Flask)
首先,在 Python 的 Flask 服务器端设置 WebSocket 路由:
```python
from flask import Flask, render_template, Response
import asyncio
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
# WebSocket endpoint
@app.route('/ws')
async def echo_socket(ws):
while True:
message = await ws.receive()
print(f'Received: {message.data}')
await ws.send(message.data)
if __name__ == '__main__':
app.run()
```
然后,在前端(HTML文件或JavaScript组件)使用 WebSocket 进行连接和通信:
```html
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>WebSocket Example</title>
</head>
<body>
<script>
const socket = new WebSocket('ws://localhost:5000/ws');
socket.addEventListener('open', function (event) {
socket.send('Hello from client!');
});
socket.addEventListener('message', function (event) {
console.log('Received:', event.data);
});
</script>
</body>
</html>
```
在这个例子中,当浏览器打开页面时会自动连接到 WebSocket 服务,并发送一条消息。服务器接收到消息后,会立即返回同样的消息。
阅读全文