HarmonyOS 鸿蒙Next 官方的socket和websocket通信问题求助,在模拟器api9下无法连接,确认下是否是bug?
HarmonyOS 鸿蒙Next 官方的socket和websocket通信问题求助,在模拟器api9下无法连接,确认下是否是bug? 测试看在模拟器下运行,使用api9的P50设备,http通信是ok的。但是测了下 socket和websocket通信,一个简单的demo都无法跑通。
想问下这是管方的bug吗?如果是什么时候能够解决下?(当前的最新的P50设备都无法测试socket通信),
另外问下api10以上的模拟器什么时候能够出来?有知道的吗?
import socket from '@ohos.net.socket';
import http from '@ohos.net.http';
@Entry
@Component
struct Index {
@State message: string = 'Hello World1';
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button('test1').width(300).margin({ top: 20 })
.onClick(() => {
var tcp = socket.constructTCPSocketInstance();
tcp.on('message', value => {
console.log("on message")
let buffer = value.message
let dataView = new DataView(buffer)
let str = ""
for (let i = 0; i < dataView.byteLength; ++i) {
str += String.fromCharCode(dataView.getUint8(i))
}
console.log("on connect received:" + str)
});
tcp.on('connect', () => {
console.log("on connect")
});
tcp.on('close', () => {
console.log("on close")
});
tcp.on('error', err => {
console.log("on error, err:" + JSON.stringify(err))
});
let bindAddress = {
address: '127.0.0.1',
port: 12345, // 绑定端口,如1234
family: 1
};
tcp.bind(bindAddress, err => {
if (err) {
console.log("bind fail, err:" + JSON.stringify(err))
return;
}
console.log('bind success');
let connectAddress = {
address: '114.115.170.245',
port: 8081, // 连接端口,如5678
family: 1
};
tcp.connect({
address: connectAddress, timeout: 6000
}, err => {
if (err) {
console.log("connect fail, err:" + JSON.stringify(err))
return;
}
console.log('connect success');
tcp.send({
data: 'Hello, server!'
}, err => {
if (err) {
console.log('send fail')
return;
}
console.log('send success')
})
});
});
setTimeout(() => {
tcp.close(err => {
console.log('close socket.')
});
tcp.off('message');
tcp.off('connect');
tcp.off('close');
}, 30 * 1000);
let httpRequest = http.createHttp();
httpRequest.request("http://114.115.170.245:8081/", (err, data) => {
if (!err) {
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + data.cookies); // 8+
} else {
console.info('error:' + JSON.stringify(err));
}
});
})
}
.width('100%')
}
.height('100%')
}
}
有什么问题吗?地址 http://114.115.170.245:8081 可供测试,端口是通的
另外测试websocket接口也有问题,无论url的地址能否访问,以下代码总能看到Connected successfully的日志,而实际并未连接成功。
以下代码可供测试验证:
let url = "ws://broker.emqx.io:8083/mqtt"
ws.connect(wsurl, (err, value) => {
if (!err) {
this._trace("Connected successfully");
} else {
this._trace("Connection failed. Err:" + JSON.stringify(err));
}
});
更多关于HarmonyOS 鸿蒙Next 官方的socket和websocket通信问题求助,在模拟器api9下无法连接,确认下是否是bug?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
把address: '127.0.0.1',改成address: '0.0.0.0'即可。
127.0.0.1为本地回环地址,只适合本地通讯,不适合网络通讯。
0.0.0.0代表所有可用本地地址,也可以使用实际的ip地址。
TCP协议相关示例可以参考:
[鸿蒙网络编程系列3-TCP客户端通讯示例](https://developer.huawei.com/consumer/cn/blog/topic/03148031515609013)
[鸿蒙网络编程系列4-实现Smtp邮件发送客户端](https://developer.huawei.com/consumer/cn/blog/topic/03148160059378015)
[鸿蒙网络编程系列5-TCP连接超时分析](https://developer.huawei.com/consumer/cn/blog/topic/03148217505374053)
[鸿蒙网络编程系列6-TCP数据粘包表现及原因分析](https://developer.huawei.com/consumer/cn/blog/topic/03148292106131016)
更多关于HarmonyOS 鸿蒙Next 官方的socket和websocket通信问题求助,在模拟器api9下无法连接,确认下是否是bug?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我也遇到了会连接成功 但是一会就会触发Error事件
这个双框架模拟器应该是不支持
针对您提到的HarmonyOS 鸿蒙Next 官方的socket和websocket通信问题,在模拟器API 9下无法连接的情况,这里提供以下分析:
-
模拟器环境限制:API 9版本的模拟器可能存在一定的环境限制或配置问题,导致socket和websocket通信无法正常工作。这可能是由于模拟器的网络配置、防火墙设置或系统权限等原因导致的。
-
版本兼容性问题:由于您使用的是鸿蒙Next的早期版本(API 9),可能存在与当前socket和websocket库版本不兼容的情况。随着鸿蒙系统的不断迭代更新,新版本的系统可能修复了旧版本中的bug或增加了新的功能,因此建议尝试使用更新版本的鸿蒙模拟器进行测试。
-
代码实现问题:虽然您未提供具体的代码实现,但也有可能是代码本身存在问题,如网络请求的配置错误、端口号错误或未正确处理异常等。
综上所述,建议首先确认模拟器的网络配置和防火墙设置是否正确,并尝试使用更新版本的鸿蒙模拟器进行测试。如果问题依旧存在,可能是代码实现或系统bug导致,建议进一步排查代码或等待鸿蒙系统的更新。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,