使用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); 
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
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); 
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
分享
微博
QQ
微信
回复
2024-05-29 22:01:32
相关问题
Socket有高概率收不到message
3022浏览 • 1回复 待解决
解决hashmap通过key取不到value
1841浏览 • 1回复 待解决
如何解决MD5加密遇到问题
1755浏览 • 1回复 待解决
HarmonyOS 使用webrtc接收不到对方视频
897浏览 • 1回复 待解决
真机联报错该如何解决
1357浏览 • 1回复 待解决
HarmonyOS toast问题如何解决
1980浏览 • 1回复 待解决
this传递问题,该如何解决
3114浏览 • 1回复 待解决
HarmonyOS 收不到onPageShow事件
727浏览 • 1回复 待解决
如何解决预览流黑屏问题
2175浏览 • 1回复 待解决