TODO: ack in packet header
This commit is contained in:
parent
4544bb3e1a
commit
8352033d0b
|
@ -73,10 +73,11 @@ NETMSGTYPE_SV_COMMANDINFOREMOVE = 38
|
||||||
NETMSGTYPE_CL_COMMAND = 39
|
NETMSGTYPE_CL_COMMAND = 39
|
||||||
NUM_NETMSGTYPES = 40
|
NUM_NETMSGTYPES = 40
|
||||||
|
|
||||||
NET_CTRLMSG_CONNECT = 0x01
|
NET_CTRLMSG_KEEPALIVE = 0
|
||||||
NET_CTRLMSG_ACCEPT = 0x02
|
NET_CTRLMSG_CONNECT = 1
|
||||||
NET_CTRLMSG_CLOSE = 0x04
|
NET_CTRLMSG_ACCEPT = 2
|
||||||
NET_CTRLMSG_TOKEN = 0x05
|
NET_CTRLMSG_CLOSE = 4
|
||||||
|
NET_CTRLMSG_TOKEN = 5
|
||||||
|
|
||||||
NET_CONNSTATE_OFFLINE = 0
|
NET_CONNSTATE_OFFLINE = 0
|
||||||
NET_CONNSTATE_TOKEN = 1
|
NET_CONNSTATE_TOKEN = 1
|
||||||
|
|
19
teeworlds.rb
19
teeworlds.rb
|
@ -35,6 +35,7 @@ class TwClient
|
||||||
@ip = 'localhost'
|
@ip = 'localhost'
|
||||||
@port = 8303
|
@port = 8303
|
||||||
@packet_flags = {}
|
@packet_flags = {}
|
||||||
|
@ticks = 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_msg(data)
|
def send_msg(data)
|
||||||
|
@ -44,6 +45,19 @@ class TwClient
|
||||||
@s.send(msg.pack('C*'), 0, @ip, @port)
|
@s.send(msg.pack('C*'), 0, @ip, @port)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# does not help because server
|
||||||
|
# drops the invalid acks
|
||||||
|
# so we have to finally
|
||||||
|
# create a proper
|
||||||
|
# sendpacket() method
|
||||||
|
# that sends a proper header
|
||||||
|
def send_ctrl_keepalive()
|
||||||
|
# size and flags
|
||||||
|
header = [0x04, 0x0A, 0x00] + str_bytes(@token)
|
||||||
|
msg = header + [NET_CTRLMSG_KEEPALIVE]
|
||||||
|
@s.send(msg.pack('C*'), 0, @ip, @port)
|
||||||
|
end
|
||||||
|
|
||||||
def send_msg_connect()
|
def send_msg_connect()
|
||||||
header = [0x04, 0x00, 0x00] + str_bytes(@token)
|
header = [0x04, 0x00, 0x00] + str_bytes(@token)
|
||||||
msg = header + [NET_CTRLMSG_CONNECT] + str_bytes(@client_token) + Array.new(501, 0x00)
|
msg = header + [NET_CTRLMSG_CONNECT] + str_bytes(@client_token) + Array.new(501, 0x00)
|
||||||
|
@ -262,6 +276,11 @@ class TwClient
|
||||||
else # process non-connless packets
|
else # process non-connless packets
|
||||||
process_server_packet(packet.payload)
|
process_server_packet(packet.payload)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ticks += 1
|
||||||
|
if @ticks % 10 == 0
|
||||||
|
send_ctrl_keepalive
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def disconnect
|
def disconnect
|
||||||
|
|
Loading…
Reference in a new issue