gpt4 book ai didi

sockets - 如何实时接收来自服务器的消息

转载 作者:行者123 更新时间:2023-12-03 12:05:12 26 4
gpt4 key购买 nike

首先,请看下面我的代码。

local function receiveData( )
l = client:receive()
print(l)
return l
end

local refNum = receiveData()

local function endTurn( )
waitText = display.newText("Opponent Turn",centerX,allY*.1,native.systemFont,30)
local passer = receiveData()
if passer ~= nil then
takeTurn()
end
end

我想做的是在屏幕上显示waitText,但是我遇到了麻烦,因为waitText直到先行者先收到数据才出现。因此,我想知道如何在等待接收到的数据时显示waitText。

我将不胜感激任何意见,谢谢。

最佳答案

您将必须做两件事:

  • 通过套接字对象上的settimeout(seconds)函数在套接字上设置超时。这已记录为here。请注意,当您使用receive时,您将必须检查错误代码,因为它可能是timeout,指示在给定时间内没有任何内容可供读取。
  • 设置计时器函数以定期读取套接字,直到数据到达

  • 就像是:
    client:settimeout(0.01) -- 10 ms

    local function receiveData( )
    l,e = client:receive()
    print(l)
    return l,e
    end

    function checkReceive()
    local passer, err = receiveData()
    if passer ~= nil then
    takeTurn()
    else
    timer.performWithDelay(100, checkReceive) -- repeat the check in 100 ms
    end
    end

    local function endTurn( )
    waitText = display.newText("Opponent Turn",centerX,allY*.1,native.systemFont,30)
    checkReceive() -- returns in 10ms if nothing available, and will be called
    -- automatically every 100ms until something arrives
    end
    seconds可以具有毫秒级的精度,但是可以接受的实际精度将因系统而异。

    关于sockets - 如何实时接收来自服务器的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749359/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com