lua-websocket支持twisted-python后端吗?

我用 Lua 写了一个小型的机器人库,但是当它连接到服务器时,服务器看不到它。我不是服务器的所有者,但我知道它有一个 Twisted-Python 后端。我想也许与客户端发送到服务器的头有关。因为,如果我运行基于 Python 的机器人,则连接并工作完美,以下是连接模块

-全局对象-
mgr = {};
group = {};
message = {};
user = {};
login = {};
event = {};

-局部对象-

local map = {};

-局部变量-
local host ='ws://sv1.uchat.pw:443';
local connected = false;

-本地导入-
local ws = require('websocket');
local json = require('json');

-本地函数 -

local function auth()
    local data = json.encode{event='bauth', name=login.user, pwd=login.password}
    map[group.name]:send(data);
end

local function sendcmd(...)
    local data = json.encode{...};
    print(data);
    cl:send(data);
end

local function events(e, evt)
    print(e, evt)
    if e.buc ~= nil then
        group ['count'] = evt.uc;
    end
    if e.bmsg ~= nil then
        user ['name'] = evt.un;
        message ['body'] = evt.msg;
        event.on_message(group, user, message);
    end
    if e.block ~= nil then
        connected = false;
    end
    if e.bauthdeny ~= nil then
        group.disconnect();
        print('bad login');
    end
end

local function event_handle(data)
        local data = json.decode(data);
        local event = data['event'];
        events(event, data);
end

local function main()
    while connected do
        local data = map[group.name]:receive();
        event_handle(data);
    end
end

local function uchat_connect(resource)
    local cl = ws.client.sync();
    local ok, _sockError = cl:connect(host, resource)
    if ok then
        group['name'] = resource;
        map[group.name] = cl;
        connected = true;
        event.on_connect(group);
        auth();
    else
        event.on_connect_error(group, _sockError);

    end
end

local function uchat_init()
    mgr.on_init()
    for i, resource in pairs(login.rooms) do
        resource = login.rooms[i];
        uchat_connect(resource);
    end
end

local function disconnect()
    cl:close();
end

local function killme()
    connected = false;
end

mgr['main'] = main;
group['send'] = send;
group['disconnect'] = disconnect;
mgr['killme'] = killme
mgr['init'] = uchat_init;

example.lua

require("uchat")

function on_connect(group)
    print('connected to ' .. group.name);
end

function on_close(group)
    print('disconnected from ' .. group.name);
end

function on_message(group, user, message)
    print(group.name, user.name, message.body);
end

function on_connect_error(group, error)
    print(group, error);
end

function init()
    login['user'] = 'testaccount';
    login['password'] = '9911324';
    login['rooms'] = {'examplegroup'}
    event['on_disconnect'] = on_close;
    event['on_connect'] = on_connect;
    event['on_message'] = on_message;
    event['on_connect_error'] = on_connect_error;
end

mgr['on_init'] = init;
mgr.init()
mgr.main()

当它连接时,您会看到:

bauthok - table uc - table

但是它不会出现在用户列表中,并且此后不会再收到任何事件。

点赞