3、tcp接收二进制数据
-- 读取byte function readInt8(tcp) local next, val = string.unpack(tcp:receive(1), "b") return tonumber(val); end -- 读取int16 function readInt16(tcp) local next, val = string.unpack(tcp:receive(2), "h"); return tonumber(val); end -- 读取int32 function readInt32(tcp) local next, val = string.unpack(tcp:receive(4), ">i"); return tonumber(val); end -- 读取字符串 function readString(tcp,len) return tostring(tcp:receive(len)); end4、tcp写二进制数据,这里和 agent 的通信协议是:开始标志位+包长度+json 字符串+结束标志位,所以对应 pack 用的参数就是 bIAb ,> 就是转化为大端
jsonData["filename"]=fileMD532 .. "." .. fileExtension jsonData["cmd"]="write" jsonData["fileSize"]=tostring(filelen) jsonData["path"]=System.."http://www.likecs.com/"..StorageDate local Jsonstr=cjson.encode(jsonData) local uiLen=string.len(Jsonstr) senddata=bpack(">b1IAb",startIndex,uiLen,Jsonstr,endIndex) socket:send(senddata)5、下载错误的时候,使用了 redirect 直接跳转到错误页面,方便输出错误信息,其实这里还可以做用户 token 校验
local ErrorUrl="/downloadError.html" ErrorMsg="url 参数解析有问题 "..index return ngx.redirect(ErrorUrl.."?msg="..ErrorMsg,``` ngx.HTTP_MOVED_TEMPORARILY)原文链接:https://www.qcloud.com/community/article/291137