V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qq1079945484
V2EX  ›  问与答

WebSocket 中接收数据的问题

  •  
  •   qq1079945484 · 2019-05-19 23:08:06 +08:00 · 1211 次点击
    这是一个创建于 2016 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    }

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

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

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

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3241 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 13:12 · PVG 21:12 · LAX 05:12 · JFK 08:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.