小程序使用WebSocket连接Flask后端

本文介绍了如何在小程序中使用WebSocket连接Flask后端,提供了两种服务端实现方法:Flask-SocketIO和Flask-Sockets(前身flask-sockets),并详细阐述了前端在微信原生框架和uni-app框架中的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

服务端实现

方法1:使用Flask-SocketIO

要在小程序中连接 Flask WebSocket,您需要按照以下步骤进行配置:

  1. 在 Flask 中安装 Flask-SocketIO 扩展。您可以使用以下命令进行安装:
	pip install flask-socketio
  1. 在 Flask 应用程序中导入 SocketIO:
	from flask_socketio import SocketIO
  1. 初始化 SocketIO:
   app = Flask(__name__)
   socketio = SocketIO(app)
  1. 创建一个 WebSocket 事件处理程序:
	@socketio.on('connect')
	def test_connect():
	    print('Client connected')
	@socketio.on('disconnect', namespace=name_space)
	def disconnect_msg():
	   print('client disconnected.')
	@socketio.on('my_event', namespace=name_space)
	def mtest_message(message):
	    print(message)
	    emit('my_response',
	         {'data': message['data'], 'count': 1})

方法2:Flask-Sockets实现☆☆☆(前身是flask-sockets)

Flask-Sock
Flask-Sockets

  1. 在 Flask 中安装 Flask-SocketIO 扩展。您可以使用以下命令进行安装:
	pip install flask-sock
  1. 创建一个 WebSocket 事件处理程序:
from flask import Flask
from flask_sock import Sock, Server

app = Flask(__name__)
sock = Sock(app)
        
@app.route('/')
def hello():
    return 'Hello World!'

@sock.route('/connect')
def connect(ws: Server):
    print('检测到客户端连接....')
    while True:
        data = ws.receive()
        print(data)
        ws.send(data)
 
if __name__ == "__main__":
    app.run(debug=True, port=5000)
  1. 使用Postman测试连接:
    在这里插入图片描述

前端实现

方法1:微信原生框架中实现

  1. 在小程序中使用 wx.connectSocket 方法连接 WebSocket:
wx.connectSocket({
  // 当使用Flask-SocketIO时需要加上'/socket.io/?EIO=4&transport=websocket',否则直接使用ws://localhost:5000
  url: 'ws://localhost:5000/socket.io/?EIO=4&transport=websocket', 
  success: function(res) {
    console.log('WebSocket connected')
  }
})

在上面的代码中,url 参数应该是您 Flask 应用程序的地址和端口号。

  1. 在小程序中监听 WebSocket 事件:
wx.onSocketOpen(function(res) {
  console.log('WebSocket connection opened')
})

wx.onSocketMessage(function(res) {
  console.log('Received WebSocket message: ' + res.data)
})

wx.onSocketError(function(res) {
  console.log('WebSocket error: ' + res.errMsg)
})

wx.onSocketClose(function(res) {
  console.log('WebSocket connection closed')
})

在上面的代码中,您可以根据需要添加其他事件处理程序。

方法2:uni-app框架中实现

var socketTask = uni.connectSocket({
	// 当使用Flask-SocketIO时需要加上'/socket.io/?EIO=4&transport=websocket',否则直接使用ws://localhost:5000
	url: 'ws://localhost:5000/socket.io/?EIO=4&transport=websocket', 
	success: () => {
		console.log('success')
	},
	fail: () => {
		console.log('fail')
	},
	complete: () => {}
});

console.log(socketTask);

socketTask.onOpen((res) => {
	console.log('onOpen');
	console.log(res);
});
socketTask.onClose((res) => {
	console.log('onClose');
	console.log(res);
});
socketTask.onMessage((res) => {
	console.log('onMessage');
	console.log(res);
});

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值