WebSocket 中接收数据的问题

2019-05-19 23:08:06 +08:00
 qq1079945484

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

现在大概是这样的情况: 消息接收线程 {

if(接收消息()== true)//此处没有消息时会阻塞,套接字被关闭返回 false { str = 收到的消息; //收到的消息是 json 格式的好友列表 }

}

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

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

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

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

1240 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX