flask后端和web进行socket对话,后端回答的内容根据自定义的列表里的数据回答
时间: 2023-06-17 20:08:19 浏览: 105
可以尝试使用 Flask-SocketIO 这个库来实现后端和前端的 socket 对话。下面是一个简单的示例:
安装 Flask-SocketIO:
```
pip install flask-socketio
```
后端代码:
```
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
# 自定义的回答列表
answers = [
'回答1',
'回答2',
'回答3',
]
@socketio.on('connect')
def test_connect():
emit('my response', {'data': 'Connected'})
@socketio.on('message')
def handle_message(message):
# 在回答列表中随机选择一个回答
answer = random.choice(answers)
emit('my response', {'data': answer})
if __name__ == '__main__':
socketio.run(app)
```
前端代码:
```
<!DOCTYPE html>
<html>
<head>
<title>SocketIO Example</title>
<script src="//code.jquery.com/jquery-1.11.1.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.5/socket.io.min.js"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', function() {
socket.send('User has connected!');
});
socket.on('my response', function(msg) {
$('#log').append('<p>Received: ' + msg.data + '</p>');
});
$('form#emit').submit(function(event) {
socket.send($('#emit_data').val());
return false;
});
});
</script>
</head>
<body>
<h1>SocketIO Example</h1>
<form id="emit" action="">
<input type="text" id="emit_data" value="Send a message...">
<input type="submit" value="Send">
</form>
<div id="log"></div>
</body>
</html>
```
在这个示例中,每当前端向后端发送一条消息时,后端会从自定义的回答列表中随机选择一个回答,并将其发送回前端。前端收到回答后会将其显示在页面上。
你可以根据自己的需求修改回答列表中的数据,以及实现更复杂的逻辑来生成回答。
阅读全文