| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | 
function iswebsocket()  return pcall(function()    if (string.upper(mg.request_info.http_headers.Upgrade)~="WEBSOCKET") then error("") end  end)endif not iswebsocket() then  mg.write("HTTP/1.0 403 Forbidden\r\n")  mg.write("Connection: close\r\n")  mg.write("\r\n")  returnend-- Callback for "Websocket ready"function ready()  mg.write("text", "Websocket ready")end-- Callback for "Websocket received data"function data(bits, content)end-- Callback for "Websocket is closing"function close()endcoroutine.yield(true); -- first yield returns (true) or (false) to accept or reject the connectionready()local lasthand = ""repeat    local cont, bits, content = coroutine.yield(true, 1.0)    local date = os.date('*t');    local hand = (date.hour%12)*60+date.min;    mg.write("text", string.format("%u:%02u:%02u", date.hour, date.min, date.sec));    if (hand ~= lasthand) then        mg.write("text", string.format("-->h %u", hand*360/(12*60)));        mg.write("text", string.format("-->m %u", date.min*360/60));        lasthand = hand;    end    if bits and content then        data(bits, content)    enduntil not cont;mg.write("text", "end")close()
 |