深入浅出学习eTs—TCP聊天室(十九)
一、需求分析
本章节我们来实现一个TCP聊天的功能
- 连接指定IP和端口
- 显示接收的内容
- 具有发送的功能
二、控件介绍
1、Socket连接
场景介绍
应用通过Socket进行数据传输,支持TCP和UDP两种协议。
接口说明
Socket连接主要由socket模块提供。具体接口说明如下表。
接口名 | 功能描述 |
constructUDPSocketInstance() | 创建一个UDPSocket对象。 |
constructTCPSocketInstance() | 创建一个TCPSocket对象。 |
bind() | 绑定IP地址和端口。 |
send() | 发送数据。 |
close() | 关闭连接。 |
getState() | 获取Socket状态。 |
connect() | 连接到指定的IP地址和端口(仅TCP支持) |
getRemoteAddress() | 获取对端Socket地址(仅TCP支持,需要先调用connect方法) |
on(type: ‘message’) | 订阅Socket连接的接收消息事件。 |
off(type: ‘message’) | 取消订阅Socket连接的接收消息事件。 |
on(type: ‘close’) | 订阅Socket连接的关闭事件。 |
off(type: ‘close’) | 取消订阅Socket连接的关闭事件。 |
on(type: ‘error’) | 订阅Socket连接的Error事件。 |
off(type: ‘error’) | 取消订阅Socket连接的Error事件。 |
on(type: ‘listening’) | 订阅UDPSocket连接的数据包消息事件(仅UDP支持)。 |
off(type: ‘listening’) | 取消订阅UDPSocket连接的数据包消息事件(仅UDP支持)。 |
on(type: ‘connect’) | 订阅TCPSocket的连接事件(仅TCP支持)。 |
off(type: ‘connect’) | 取消订阅TCPSocket的连接事件(仅TCP支持)。 |
基本例程(参考我之前的家庭医生终端系统)。
2、AppStorage与组件同步
在管理组件拥有的状态中,已经定义了如何将组件的状态变量与父组件或祖先组件中的@State装饰的状态变量同步,主要包括@Prop、@Link、@Consume。
本章节定义如何将组件变量与AppStorage同步,主要提供@StorageLink和@StorageProp装饰器。
@StorageLink装饰器
组件通过使用@StorageLink(key)装饰的状态变量,与AppStorage建立双向数据绑定,key为AppStorage中的属性键值。当创建包含@StorageLink的状态变量的组件时,该状态变量的值将使用AppStorage中的值进行初始化。在UI组件中对@StorageLink的状态变量所做的更改将同步到AppStorage,并从AppStorage同步到任何其他绑定实例中,如PersistentStorage或其他绑定的UI组件。
@StorageProp装饰器
组件通过使用@StorageProp(key)装饰的状态变量,将与AppStorage建立单向数据绑定,key标识AppStorage中的属性键值。当创建包含@StoageProp的状态变量的组件时,该状态变量的值将使用AppStorage中的值进行初始化。AppStorage中的属性值的更改会导致绑定的UI组件进行状态更新。
即通过AppStorage.Link和 @StorageLink的方式,可实现外部动态刷新Text组件和image组件(等等之类都可以),方便我们在全局调用时更新数据。
三、UI设计
本项目的基本内容是可以在预览器中看到的,所以先在预览器中简单设计UI
1、基本界面
以后不会大时间讲解UI了,会直接放成品,且我的源码都在Gitee仓上存在,需要的可以自己下载,会着重体现程序部分。
2、接口绑定
首先是接收框处的变量绑定。
3、TCP回调设置
该部分实现聊天框内部的文字刷新。
4、IP设置
这里我是使用的合宙的TCP工具[wstool (luatos.com)](。
在此处修改IP和端口。
5、远端模拟器
在模拟器中打开如上。
四、实际测试
使用模拟器进行发送。
在TCP工具处有接收到内容,此时进行回复。
在APP端可以接收到并显示(暂时可能只支持英文接受显示)。
五、动态图
TCP助手显示如下:
相关文章
- Seurat软件学习9-sctransform的使用
- 信息安全技术 反垃圾邮件产品技术要求和测试评价方法
- 蜻蜓:GitLab结合fortify实现自动化代码审计实践
- 【翻译】图像到Base64字符串转换
- AAAI2023 | 针对联邦推荐场景的非定向攻击与防御
- WSDM2023 | 面向推荐场景的无偏知识蒸馏
- 麦吉尔大学最新搜索与推荐多样性研究综述,多角度介绍其研究进展
- SOLIDWORKS 2023工程图和出详图新功能 创建更智能化 更高精度的工程详图
- DDD的哲学意味(下)
- iOS根据两点经纬度坐标计算指南针方位角
- 破解色带现象(下)
- 音视频技术开发周刊 | 277
- FreeSWITCH在视频会议中的实践经验
- FreeSWITCH高可用部署与云原生集群部署
- 介绍一个被称为十一边形战士的强大模型
- Web3赋能新商业模式
- RTMP二十岁生日快乐
- 细粒度视觉质量评价:回顾和思考
- 云视频会议系统私有化实践
- 电子木鱼|现在的积德方式都这么赛博了?