使用Flask Socket IO在Python中实现WebSocket的Java实现
本文向大家介绍使用Flask Socket IO在Python中实现WebSocket的Java实现,包括了使用Flask Socket IO在Python中实现WebSocket的Java实现的使用技巧和注意事项,需要的朋友参考一下
使用Flask Socket IO的Python WebSocket
Flask是构建的python网络框架。它被认为比Django Web框架更具有Python风格,因为在常见情况下,等效的Flask Web应用程序更加明确。Flask使用宁静来响应HTTP请求。将WebSocket与Flask结合使用,将使它成为一个实现实时Web应用程序,并通过WebSocket轻松实现双重通信。
简单的“ hello world”应用程序示例
在虚拟环境中安装库,
创建虚拟环境
-bash-4.2$python3 -m venv venv源(或激活)虚拟环境
-bash-4.2$source venv/bin/activate使用pip安装所需的库
(venv)-bash-4.2 $pip install flask
(venv)–basj-4.2 $pip install Flask-SocketIO
服务器代码示例
from flask import Flask app = Flask(__name__) @app.route('/', methods=['GET']) def hello_world(): return "Hello World" if __name__ == '__main__': app.run(host='0.0.0.0', port=5005)
执行代码
(venv) -bash-4.2$ python3 hello_world_flask.py * Serving Flask app "hello_world_flask" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:5005/ (Press CTRL+C to quit)
要测试该应用程序,请使用浏览器并将URL作为'http:// localhost:5005 /'或CURL命令提供
-bash-4.2$ curl http://localhost:5005/ Hello World -bash-4.2$
让Flask与WebSockets一起使用
我们将使用socket.io和相关的Flask插件。Socket-IO是一个出色的引擎,它允许基于事件的双向通信。对于socket-io通信,“事件”由服务器或连接的客户端触发,并且相应的回调函数设置为在检测到事件时执行。
使用以下代码在Flask中非常简单地实现事件触发器或绑定事件回调的实现。
from flask import Flask, render_template from flask_socketio import SocketIO, emit app = Flask(__name__) app.config['SECRET_KEY'] = 'include_help!' socketio = SocketIO(app) @socketio.on('my event', namespace='/my_namespace') # 当一个事件被调用时,此方法被调用 # 触发了“我的事件” def test_message(message): # 这会触发名为“我说”的新事件 emit('i said ', {'data': message['data']}) if __name__ == '__main__': socketio.run(app)
在客户端,使用带有JQuery的少量JavaScript来处理传入和传出的触发事件。
$(document).ready(function() { // 使用“ / my_namespace”命名空间。"/my_namespace" namespace. namespace = '/my_namespace'; // 连接到Socket.IO服务器。 // 连接网址具有以下格式, // 相对于当前页面: // http[s]://<domain>:<port>[/<namespace>] var socket = io(namespace); // 当与 // 服务器建立。 socket.on('connect', function() { socket.emit('my_event', { data: 'I\'m connected!' }); }); // 服务器发送的数据的事件处理程序。 // 每当服务器发出数据时,都会调用回调函数 //给客户。然后将数据显示在“已接收”"Received" // 页面的部分。 socket.on('i said', function(msg) { $('#log').append('<br>' + $('<div/>').text('Received #'+ msg.count +':'+ msg.data).html()); }); });
上面的内容实际上是服务器和客户端之间发送消息的框架。