使用Socket时,如何解决较高概率收不到 client.on("message", (value: SocketInfo) 中的回调问题

根据文档https://www.seaxiang.com/blog/2d691b22a889468680b455c7dd5a8cdb,有比较高的概率收不到

client.on("message", (value: SocketInfo) 中的回调。

具体代码如下:

let tcpServer = socket.constructTCPSocketServerInstance(); 
  
tcpServer.on("connect", (client: socket.TCPSocketConnection) => { 
// Subscribe to events of the TCPSocketConnection object. 
client.on("close", () => { 
console.log("on close success"); 
}); 
client.on("message", (value: SocketInfo) => { 
// 此处高概率收不到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("received message--:" + str); 
});
HarmonyOS
2024-05-28 20:57:16
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
牙膏只用咸的

定义一个数组,在有客户端连接上来的时候,将客户端的socket加入数组中,避免被回收释放,导致无法接收数据。代码如下:

参考代码:

// 定义存放客户端连接的数组 
let tcpConnectArray: socket.TCPSocketConnection[] = []; 
  
tcpServer.on("connect", (client: socket.TCPSocketConnection) => { 
// 保存客户端的socket 
tcpConnectArray.push(client); 
// Subscribe to events of the TCPSocketConnection object. 
client.on("close", () => { 
console.log("on close success"); 
}); 
client.on("message", (value: SocketInfo) => { 
// 此处高概率收不到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("received message--:" + str); 
});
分享
微博
QQ
微信
回复
2024-05-29 22:01:32
相关问题
Socket有高概率收不到message
1993浏览 • 1回复 待解决
解决hashmap通过key取不到value
1023浏览 • 1回复 待解决
如何解决MD5加密遇到问题
783浏览 • 1回复 待解决
真机联报错该如何解决
327浏览 • 1回复 待解决
this传递问题,该如何解决
2070浏览 • 1回复 待解决
HarmonyOS toast问题如何解决
610浏览 • 1回复 待解决
如何解决预览流黑屏问题
1027浏览 • 1回复 待解决
Flutter - EventChannel问题
49浏览 • 1回复 待解决
NAPI执行上层如何获取env
2151浏览 • 1回复 待解决
如何解决文件中文乱码问题
2594浏览 • 3回复 待解决
Gauge组件问题,该如何解决
188浏览 • 1回复 待解决
如何解决底层库无法调试问题
868浏览 • 1回复 待解决
HarmonyOS ArkTS接口案例问题
213浏览 • 1回复 待解决