lune/tests/net/socket/wss_rw.luau

31 lines
834 B
Text

local net = require("@lune/net")
local process = require("@lune/process")
local stdio = require("@lune/stdio")
local task = require("@lune/task")
-- We're going to use Discord's WebSocket gateway server
-- for testing that we can both read from a stream,
-- as well as write to the same stream concurrently
local socket = net.socket("wss://gateway.discord.gg/?v=10&encoding=json")
local spawnedThread = task.spawn(function()
while not socket.closeCode do
socket.next()
end
end)
local delayedThread = task.delay(5, function()
task.defer(process.exit, 1)
stdio.ewrite("`socket.send` halted, failed to write to socket")
process.exit(1)
end)
task.wait(1)
local payload = '{"op":1,"d":null}'
socket.send(payload)
socket.send(buffer.fromstring(payload))
socket.close(1000)
task.cancel(delayedThread)
task.cancel(spawnedThread)