玩转OpenHarmony社交场景:即时通讯平台

一、简介

本样例是基于即时通讯(Instant messaging,简称IM)服务实现的OpenAtom OpenHarmony(简称“OpenHarmony”)应用,允许两人或多人使用互联网即时地传递文字、图片、文件、语音、emoji等讯息,可应用于各类聊天场景,为人们带来更加及时高效的通讯体验。

此外即时通讯平台具备较高的定制化特点,适用于多种行业,客户可以根据自己的需求来定制,实现即时通讯的内部私有化。

设备端:DAYU200(RK3568)开发板,OpenHarmony 3.1 release系统。

二、即时通讯实现原理

想要实现多个设备之间的无障碍即时通讯,需要多台终端设备、终端应用和服务器配合一起使用。首先应该将终端应用安装到终端设备上,用户通过应用向服务器申请注册账号。随后,用户可以通过账号进行查找,添加其他好友,并向好友发送文字、图片、文件、语音、emoji等讯息。用户发送的讯息会先送达服务器,由服务器判断其好友的状态(离线/在线),然后选择发送或者暂时缓存消息等操作。最后,好友的终端应用接收到消息。

实现即时通讯的设备需求:安装应用的终端设备、网络环境和云端服务器。

前提条件:用户将应用安装在终端设备上,并且拥有注册账号,且需要通讯的用户也成功注册了账号并且添加了好友。

通讯原理:用户在安装了应用的终端设备上编辑信息(文字、图片、文件、语音、emoji等),通过网络将消息发送至云端服务器。当对方用户在线时,云端服务器将把消息推送给对方用户,对方用户安装了应用的终端设备也将接收到信息。当对方用户不在线时,信息将被暂时缓存在云端服务器。

三、4步实现多人即时通讯

(1) 通讯功能通讯功能是通过TCP协议实现的,我们将通讯接口connect()、send()、receive()的实现放置在CPP文件中,通过NAPI的方式对JS层暴露接口。

• connect():客户端和服务器建立连接;

• send():消息发送功能

• receive():消息接收功能;

//建立TCP连接
if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {
    napi_create_int32(env, 0, &result);
} else {
    napi_create_int32(env, 1, &result);
    OH_LOG_INFO(LOG_APP,"C++ 接收线程启动");
    startRec();
}
 //发送消息
if(send(sock_cli, data, strlen(data),0) == -1) {
    OH_LOG_INFO(LOG_APP,"zjf == send() : -1");
    napi_create_int32(env, 0, &result);
} else {
    OH_LOG_INFO(LOG_APP,"zjf == send() : !-1");
    napi_create_int32(env, 1, &result);
}
//接收消息
getStep(queue0,sharedMessage); //取出一条消息
const char *c_s=sharedMessage.c_st
<think>我们遇到了一个错误:尝试重命名一个不存在的镜像。错误信息表明本地没有这个镜像。用户之前可能已经尝试过拉取这个镜像,但失败了(如上一个问题所示),所以现在本地没有这个镜像,因此无法重命名。解决方案步骤:1.首先需要确认该镜像确实存在于本地。使用 `docker images`查看。2.如果不存在,需要先拉取镜像。但之前拉取失败,所以可能需要先解决拉取问题(如上一个回答所述)。3.如果镜像存在,但名称输入有误,需要修正名称。根据错误信息,当前本地没有该镜像,因此我们需要先拉取镜像,或者确认镜像的正确名称。具体步骤:-检查镜像名称是否正确(包括大小写、特殊字符等) -尝试拉取镜像:`dockerpull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0`-如果拉取失败,参考上一个问题的解决方案(登录仓库、检查网络、确认仓库是否存在等) -拉取成功后,再执行重命名操作如果用户已经确认镜像不存在,并且拉取失败,那么可能需要从其他途径获取镜像(如构建镜像)。因此,回答将包含以下内容:1.错误原因分析:镜像不存在于本地。2.解决步骤:先拉取镜像,再重命名。3.如果拉取失败的处理建议。注意:由于用户是在Windows的cmd下操作,命令格式相同。同时,根据规则,最后必须提出3-5个相关问题。</think>### Docker镜像重命名错误分析与解决 您遇到的错误 `Error response from daemon: No such image` 表明Docker在本地找不到指定的原镜像。以下是详细分析和解决方案: #### 错误原因: 1. **镜像不存在于本地**: - 您尚未拉取 `swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0` 到本地 - 或镜像名称/标签输入有误(大小写、特殊字符等) 2. **镜像列表验证**: ```bash docker images # 检查完整镜像列表 docker images | findstr "openharmony" # Windows搜索 ``` #### 解决方案: 1. **先拉取镜像再重命名**: ```bash docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0 docker tag swr...1.0.0 openharmony-docker:1.0.0 ``` 2. **使用镜像ID替代名称**(如果已存在其他标签): ```bash # 获取镜像ID docker images # 通过ID重命名 docker tag e530b8d2 openharmony-docker:1.0.0 ``` 3. **名称修正技巧**: - 使用Tab键自动补全(PowerShell/CMD支持) - 复制粘贴镜像全称避免手误 - 检查特殊字符:`/`、`:`、`.` 需完整保留 4. **仓库登录验证**(如果是私有镜像): ```bash docker login swr.cn-south-1.myhuaweicloud.com ``` #### 操作验证: ```bash docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" ``` 应显示新旧两个镜像标签指向相同镜像ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值