使用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
按赞同
/
按时间
hujianwu

定义一个数组,在有客户端连接上来的时候,将客户端的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
369浏览 • 1回复 待解决
解决hashmap通过key取不到value
475浏览 • 1回复 待解决
NAPI执行上层如何获取env
679浏览 • 1回复 待解决
如何解决MD5加密遇到问题
163浏览 • 1回复 待解决
this传递问题,该如何解决
731浏览 • 1回复 待解决
如何解决预览流黑屏问题
362浏览 • 1回复 待解决
如何解决文件中文乱码问题
960浏览 • 1回复 待解决
如何解决webview loaddata白屏问题
386浏览 • 1回复 待解决
HarmonyOS如何解决数据存储问题
7622浏览 • 3回复 已解决
如何解决底层库无法调试问题
419浏览 • 1回复 待解决
如何解决webview离线加载白屏问题
438浏览 • 1回复 待解决
如何解决module相互依赖问题
479浏览 • 1回复 待解决
interface如何调用
452浏览 • 1回复 待解决
如何解决hdc无法连接真机问题
479浏览 • 1回复 待解决