升级task模块和使用模块的网络相关函数,ws连接任务不再与未完成的http请求冲突
This commit is contained in:
@@ -5,6 +5,7 @@ local tasks={}
|
||||
|
||||
local TASK={
|
||||
netTaskCount=0,
|
||||
wsConnecting=false,
|
||||
}
|
||||
function TASK.getCount()
|
||||
return #tasks
|
||||
@@ -17,7 +18,10 @@ function TASK.update()
|
||||
if T.net then
|
||||
TASK.netTaskCount=TASK.netTaskCount-1
|
||||
end
|
||||
rem(tasks,i)
|
||||
if T.ws then
|
||||
TASK.wsConnecting=false
|
||||
end
|
||||
rem(tasks,i)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -44,6 +48,20 @@ function TASK.newNet(code,...)
|
||||
}
|
||||
end
|
||||
end
|
||||
function TASK.newWS(code,...)
|
||||
TASK.wsConnecting=true
|
||||
local thread=ct.create(code)
|
||||
ct.resume(thread,...)
|
||||
if ct.status(thread)~="dead"then
|
||||
tasks[#tasks+1]={
|
||||
thread=thread,
|
||||
code=code,
|
||||
args={...},
|
||||
net=true,
|
||||
ws=true,
|
||||
}
|
||||
end
|
||||
end
|
||||
function TASK.removeTask_code(code)
|
||||
for i=#tasks,1,-1 do
|
||||
if tasks[i].code==code then
|
||||
|
||||
@@ -559,7 +559,7 @@ do--httpRequest & wsConnect
|
||||
end
|
||||
|
||||
function wsConnect(tick,path,header)
|
||||
if TASK.netTaskCount>0 then
|
||||
if TASK.wsConnecting then
|
||||
LOG.print(text.waitNetTask,"message")
|
||||
return
|
||||
end
|
||||
@@ -569,7 +569,7 @@ do--httpRequest & wsConnect
|
||||
header=header,
|
||||
}
|
||||
if task then
|
||||
TASK.newNet(tick,task)
|
||||
TASK.newWS(tick,task)
|
||||
else
|
||||
LOG.print("NETlib error: "..err,"warn")
|
||||
end
|
||||
|
||||
@@ -28,7 +28,6 @@ local function task_enterRoom(task)
|
||||
end
|
||||
end
|
||||
local function enterRoom(roomID)
|
||||
coroutine.yield()
|
||||
wsConnect(
|
||||
task_enterRoom,
|
||||
PATH.socket..PATH.onlinePlay..
|
||||
@@ -72,7 +71,7 @@ local function task_createRoom(task)
|
||||
local res=json.decode(response.body)
|
||||
if response.code==200 and res.message=="OK"then
|
||||
LOG.print(text.createRoomSuccessed)
|
||||
TASK.newNet(enterRoom,res.room.id)
|
||||
enterRoom(res.room.id)
|
||||
else
|
||||
LOG.print(text.httpCode..response.code..": "..res.message,"warn")
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user