帮我写一个flask代码,实现和web进行socket聊天
时间: 2023-06-17 15:08:34 浏览: 103
好的,以下是一个简单的 Flask 应用程序,它使用 WebSocket 实现实时聊天:
```python
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('message')
def handle_message(message):
print('received message: ' + message)
emit('response', message, broadcast=True)
if __name__ == '__main__':
socketio.run(app, debug=True)
```
上面的代码中,`@socketio.on('message')` 装饰器表示处理名为 `message` 的事件,这是客户端发送消息的事件名称。当服务器收到这个事件时,它会打印消息并使用 `emit()` 函数将消息广播到所有连接的客户端。
在客户端,你可以使用 JavaScript 来连接到 WebSocket 并发送消息。以下是一个简单的示例:
```html
<!doctype html>
<html>
<head>
<title>Flask SocketIO Chat</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.js"></script>
</head>
<body>
<textarea id="messages" cols="50" rows="10"></textarea>
<br/>
<input id="input" type="text" size="50"/>
<button onclick="sendMessage()">Send</button>
<script>
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('response', function(msg) {
$('#messages').append(msg + '\n');
});
function sendMessage() {
var msg = $('#input').val();
socket.emit('message', msg);
$('#input').val('');
}
</script>
</body>
</html>
```
在客户端代码中,我们使用 `io.connect()` 函数连接到服务器,并使用 `socket.emit()` 函数将用户输入的文本发送到服务器。然后,我们使用 `socket.on()` 函数监听服务器发送的 `response` 事件,并将其附加到文本区域中。
当你运行应用程序时,你应该可以在浏览器中访问 `http://localhost:5000` 并开始聊天。注意:你需要安装 Flask-SocketIO 才能使用 WebSocket。
阅读全文