ws_url = "ws://demos.kaazing.com/echo"

DLL_PATH = "../websocket.dll"

WS_CONNECT = Win32API.new(DLL_PATH, "ws_connect", "ip", "i")
WS_UPDATE = Win32API.new(DLL_PATH, "ws_update", "i", "i")
WS_DATA = Win32API.new(DLL_PATH, "ws_data", "pp", "v")
WS_SEND = Win32API.new(DLL_PATH, "ws_send", "ip", "v")
WS_CLOSE = Win32API.new(DLL_PATH, "ws_close", "i", "v")

raise if WS_CONNECT.call(0, ws_url) < 0

f = File.open("../result.txt", "w")

30.times do |i|
  WS_SEND.call(0, "hi! #{i}")
end

120.times do |i|
  Graphics.update

  n = WS_UPDATE.call(0)
  buffer_len = n / 1024
  recv_num = n % 1024

  if recv_num > 0
    buffer = "\0" * buffer_len
    lens = "\0" * 4 * recv_num

    WS_DATA.call(buffer, lens)

    s = 0
    f.puts "recv #{recv_num} at frame No.#{i}:"
    lens.unpack("L*").each do |len|
      f.puts "#{buffer[s...s + len]}"
      s += len
    end
  end
end

WS_CLOSE.call(0)

f.close

exit