Remove send retrying, make connecting reopen last channels
This commit is contained in:
parent
aa40ec1285
commit
f266185cc3
19
client.lua
19
client.lua
|
@ -13,11 +13,13 @@ function skynet.connect(force)
|
||||||
if not skynet.socket or force then
|
if not skynet.socket or force then
|
||||||
-- If we already have a socket and are throwing it away, close old one.
|
-- If we already have a socket and are throwing it away, close old one.
|
||||||
if skynet.socket then skynet.socket.close() end
|
if skynet.socket then skynet.socket.close() end
|
||||||
-- Reset open channels, make a new websocket
|
|
||||||
skynet.open_channels = {}
|
|
||||||
sock = http.websocket(skynet.server)
|
sock = http.websocket(skynet.server)
|
||||||
if not sock then error "Skynet server unavailable, broken or running newer protocol version." end
|
if not sock then error "Skynet server unavailable, broken or running newer protocol version." end
|
||||||
skynet.socket = sock
|
skynet.socket = sock
|
||||||
|
|
||||||
|
for _, c in pairs(skynet.open_channels) do
|
||||||
|
skynet.open(channel)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -26,16 +28,9 @@ local function value_in_table(t, v)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local function send_raw(data, tries)
|
local function send_raw(data)
|
||||||
local tries = tries or 0
|
skynet.connect()
|
||||||
-- We should not keep trying to reconnect forever.
|
skynet.socket.send(json.encode(data))
|
||||||
if tries >= 10 then error(string.format("Could not reconnect to skynet after %d tries", tries)) end
|
|
||||||
-- Add small delay
|
|
||||||
if tries > 1 then sleep(tries / 3) end
|
|
||||||
-- Ensure we have a connection, force if we errored before
|
|
||||||
skynet.connect(tries > 0)
|
|
||||||
local ok, err = pcall(skynet.socket.send, json.encode(data))
|
|
||||||
if not ok then send_raw(data, tries + 1) end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Opens the given channel
|
-- Opens the given channel
|
||||||
|
|
Loading…
Reference in New Issue