websocket中发生数据丢失_WebSocket 中接收数据的问题

在一个聊天系统里,我要读取我的好友列表,那么我要向服务端发送一条数据告诉服务端,然后在消息接收线程中就会收到消息。

现在大概是这样的情况:

消息接收线程 {

if(接收消息()== true)//此处没有消息时会阻塞,套接字被关闭返回 false

{

str = 收到的消息; //收到的消息是 json 格式的好友列表

}

}

getFirendList(){

ws.send("获取好友列表");

}

当我发送获取好友列表请求后,我只能在消息接收线程中收到好友列表信息,我希望能把获取好友列表写到一个函数里,然后我在 A 线程中调用就直接能获取到。

我能想到的就是定义一个全局变量 buff 临时存储消息,当 getFirendList()被调用时,执行 ws.send("获取好友列表");,然后再返回 buff,但不能马上返回,得延迟 2 秒,让消息接收线程给 buff 赋值后再返回。但这样我觉得太寒酸了,如果弄一个信号量标识一下,等消息接收到好友列表保存,并更改信号量后,再返回,这样也不错,但是我觉得这样又有点浪费 CPU 资源,因为要用循环判断信号量有没有被改变。

所以我想问问大家有没有什么更好的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值