📜  websockets socketio flask - TypeScript (1)

📅  最后修改于: 2023-12-03 14:48:26.229000             🧑  作者: Mango

使用 WebSockets、Socket.IO 和 Flask-WebSockets 实现实时通信

  • WebSockets 是一种在客户端和服务器之间建立持久连接的通信协议,可以实现实时通信。
  • Socket.IO 是一个基于 WebSockets 的 JavaScript 框架,支持实时通信、广播、室内聊天等功能。
  • Flask-WebSockets 是一个基于 Flask 的 WebSocket 插件,可以让你使用 Flask 快速创建 WebSocket 应用。
WebSockets

WebSockets 是一种在客户端和服务器之间建立持久连接的通信协议,相较于传统的 HTTP 请求-响应模式,可以实现实时通信。使用 WebSockets,客户端和服务器之间建立一条隧道,双方可以随时发送数据。客户端通过 JavaScript API 创建 WebSocket 对象,与服务器建立连接后,可以使用 send() 方法向服务器发送数据,也可以监听 onmessage 事件处理来自服务器的消息。

使用 WebSocket API 创建 WebSocket 对象:

var ws = new WebSocket('ws://localhost:8000');

发送数据:

ws.send('Hello, server!');

接收消息:

ws.onmessage = function(event) {
  console.log(event.data);
};
Socket.IO

Socket.IO 是一个基于 WebSockets 的 JavaScript 框架,支持实时通信、广播、室内聊天等功能。Socket.IO 提供了一些内置的事件,如 connect 和 disconnect,可以监听客户端和服务器之间的连接建立和断开,还支持自定义事件。客户端使用 io() 函数创建 WebSocket 连接,与服务器建立连接后,可以使用 emit() 方法和服务器通信,也可以监听 on() 事件处理来自服务器的消息。

使用 io() 函数创建 WebSocket 对象:

var socket = io('http://localhost:8000');

发送数据:

socket.emit('message', { data: 'Hello, server!' });

接收消息:

socket.on('message', function(data) {
  console.log(data);
});
Flask-WebSockets

Flask-WebSockets 是一个基于 Flask 的 WebSocket 插件,可以让你使用 Flask 快速创建 WebSocket 应用。Flask-WebSockets 支持使用 WSGI、gevent、gevent-websocket 等多种服务器。使用 Flask-WebSockets,可以使用路由定义 WebSocket 处理程序,使用 Flask 的上下文管理器实现访问当前请求和应用程序上下文。

定义 WebSocket 处理程序:

from flask import Flask
from flask_sockets import Sockets

app = Flask(__name__)
sockets = Sockets(app)

@sockets.route('/echo')
def echo_socket(ws):
    while not ws.closed:
        message = ws.receive()
        if message is not None:
            ws.send(message)

if __name__ == '__main__':
    app.debug = True
    from gevent import pywsgi
    from geventwebsocket.handler import WebSocketHandler
    server = pywsgi.WSGIServer(('localhost', 8000), app,
                               handler_class=WebSocketHandler)
    server.serve_forever()

使用 WebSocket API 连接服务器:

var ws = new WebSocket('ws://localhost:8000/echo');

ws.onopen = function() {
  console.log('Connected to server');
  ws.send('Hello, server!');
};

ws.onmessage = function(event) {
  console.log(event.data);
};

以上是使用 WebSockets、Socket.IO 和 Flask-WebSockets 实现实时通信的基本知识,希望可以帮助你快速实现实时通信功能。