当前位置: 首页 > news >正文

Android studio开发——room功能实现用户之间消息的发送

文章目录

        • 1. Flask-SocketIO 后端代码
          • 后端代码
        • 2. Android Studio Java 客户端代码
          • 客户端代码
        • 3. 代码说明


SocketIO基础

1. Flask-SocketIO 后端代码
后端代码
from flask import Flask, request
from flask_socketio import SocketIO, emit
import uuidapp = Flask(__name__)
socketio = SocketIO(app)# 存储客户端的 session ID 和用户名的映射
clients = {}@socketio.on('join')
def on_join():username = request.args.get('username')room = username clients[username] = usernamejoin_room(room)@socketio.on('leave')
def on_leave():username = request.args.get('username')room = username leave_room(room)removed_value = clients.pop(username)@socketio.on('client_message')
def handle_client_message(data):target_username = data.get('target')message = data.get('message')if target_username in clients:emit('server_message', message , to=target_username )else:# 如果没有指定目标用户,则广播消息emit('server_message', "targetUsernameOffline")#返回发送失败消息:目标用户离线if __name__ == '__main__':socketio.run(app, host='0.0.0.0', port=5000)
2. Android Studio Java 客户端代码
客户端代码
import io.socket.client.IO;
import io.socket.client.Socket;
import io.socket.emitter.Emitter;public class MainActivity extends AppCompatActivity {private Socket mSocket;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);try {// 替换为你的服务器地址mSocket = IO.socket("http://your-server-address:5000");mSocket.connect();mSocket.emit("join", new JSONObject().put("username", "1331554545") // 每个用户拥有自己的房间// 发送消息给特定用户mSocket.emit("client_message", new JSONObject().put("target", "1331554646") // 目标用户的用户名.put("message", "Hello Bob!")); // 消息内容// 监听服务器消息mSocket.on("server_message", new Emitter.Listener() {@Overridepublic void call(Object... args) {String message = (String) args[0];runOnUiThread(() -> {Toast.makeText(MainActivity.this, "Received: " + message, Toast.LENGTH_SHORT).show();});}});} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void onDestroy() {super.onDestroy();mSocket.emit("leave", new JSONObject().put("username", "1331554545") // 关闭对话删除房间mSocket.disconnect();mSocket.off("server_message");}
}
3. 代码说明
  1. 后端代码

    • on_join 中,每个连接以自己username创建房间,表示上线。
    • handle_client_message 中,根据通过target_username向指定房间发送消息,完成向指定客户端发送消息
    • on_leave 中,从MainActivity离开,删除房间,表示离线。
  2. 客户端代码

    • 客户端通过 socket.on 监听服务器发送的 server_message 事件。
    • 客户端通过 socket.emit 向服务器发送消息,进而向指定客户端发送消息。

相关文章:

  • 【实战】在 Linux 上使用 Nginx 部署 Python Flask 应用
  • 实现Azure Databricks安全地请求企业内部API返回数据
  • 【MySQL】004.MySQL数据类型
  • 【Openlayers】Openlayers 入门教程
  • ARINC818-实现
  • 解决 IntelliJ IDEA 项目启动时端口冲突问题
  • Spring Boot中Excel处理完全指南
  • 基于chatgpt和deepseek解答显卡的回答
  • PyTorch数据操作基础教程:从张量创建到高级运算
  • STM32 外部中断EXTI
  • 原生localStorage到zustand + persist改造
  • [密码学基础]密码学发展简史:从古典艺术到量子安全的演进
  • 碰一碰发视频系统源码搭建全解析:定制化开发
  • 芝法酱躺平攻略(21)——kafka安装和使用
  • LabVIEW 程序维护:为何选靠谱团队?
  • 纯FPGA控制AD9361的思路和实现之一 概述
  • JVM 系列:JVM 内存结构深度解析
  • Day10【基于encoder- decoder架构实现新闻文本摘要的提取】
  • 面向对象设计中的类的分类:实体类、控制类和边界类
  • 暨南大学 2024年ACM程序设计校赛 题解与知识点分析
  • 特朗普关税风暴中的“稳”与“变”:新加坡国会选举观察
  • 外交部亚洲司司长刘劲松就日本民用飞机侵闯我钓鱼岛领空向日方提出严正交涉
  • 5月1日全国铁路发送旅客2311.9万人次,创历史新高
  • 美乌签署协议建立美乌重建投资基金
  • 国家能源局通报上月投诉情况:赤峰有群众反映电费异常增高,已退费
  • 王毅:为改革完善全球治理作出金砖贡献