luarocks 学习笔记

记录使用luarocks cqueues时碰到的一些问题:

1. cqueues socket 与 redis 通信

 

function myfunc()
print("start")
local redis = require("cqueues.socket").connect("127.0.0.1", "6379")
redis:setmode("b", "nb")
redis:connect(5) -- timeout 5 seconds
local data = "*3\r\n$3\r\nset\r\n$5\r\nmystr\r\n$3\r\n333\r\n" -- set mystr 333
--local data = "ping\r\n"
redis:write(data)
print(redis:read())
print("finish")
end

 

 

2. cqueues socket 实现 I/O多路复用

function myfunc()

local cqueues = require("cqueues").new()
local server = require("cqueues.socket").listen({
host = "0.0.0.0",
port = "3456",
reuseaddr = true,
reuseport = true
})

cqueues:wrap(function()
for cli in server:clients() do

print(cli:peername())

local cq = require("cqueues").new()
cqueues:wrap(function()
cq:loop()
end)
cq:wrap(function()
local buf=""
repeat
buf = cli:read()
local host, port = select(2, cli:peername())
print("recv from "..host..":"..port.." buf = ",buf)
until #buf == 0
end)

end
end)

assert(cqueues:loop())
end

 

3. classy 模块使用 与 lua使用table索引调用函数和普通调用的区别

_G.class = require("classy")
local mytestFile=class("mytestFile")

function mytestFile:__init()
self.aa = 99
end

function mytestFile.func1(self, ss)  -- 使用点的话需要显式传self
print(self.aa)
print("i am here ",ss)
end
-- 使用冒号定义函数时,实际上隐藏了一个形参的声明,这个形参会截获调用函数时的第一个实参并把它赋值给self
function mytestFile:func2(ss)      
print(self.aa)
print("i am func2 ",ss)
end

return mytestFile

但是在使用 kk["func2"]这种方式调用函数时,同样也需要显式传 自己 进去

 

 

 


 

 

posted @ 2021-07-16 21:47  寅鸷  阅读(107)  评论(0编辑  收藏  举报