【发布时间】:2014-03-27 05:41:35
【问题描述】:
我的问题是关于 lua 套接字,说我有一个聊天,我想为那个聊天制作一个机器人。但是聊天有多个房间,所有房间都在不同的服务器上,这些房间是由一个名为 getServer 的函数计算的
连接函数看起来像这样
function connect(room)
con = socket.tcp()
con:connect(getServer(room), port)
con:settimeout(0)
con:setoption('keepalive', true)
con:send('auth' .. room)
循环它的函数是
function main()
while true do
rect, r, st = socket.select({con}, nil, 0.2)
if (rect[con] ~= nil) then
resp, err, part = con:receive("*l")
if not( resp == nil) then
self.events(resp)
end
end
end
end
现在,当所有运行它只接收来自第一个房间的数据时,我不知道如何解决这个问题
【问题讨论】:
-
显示您为每个房间调用 connect() 的代码,而主要的,不要显示片段。并修复坏的缩进。
-
我会将它链接到 github 存储库,因为文件很大;(link Github[link] 只需添加 socket.select() 就可以了
-
这不是我的意思。显示调用
connect(room)的代码和调用main()的代码。您附加的链接不包含这些。 -
对不起,
main()函数是ch_handler函数,connect 在ch_init内部调用,ch_init函数在 example.lua 中调用 link example.lua -
您需要创建一个SSSCE。代码太多。也许是con,它是ch_connect中的一个全局集合,然后在ch_handler中使用,但是每个连接都会用最新的连接覆盖引用?