lua-websocket支持twisted-python后端吗?
2014-12-24 6:31:40
收藏:0
阅读:68
评论:0
我用 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
但是它不会出现在用户列表中,并且此后不会再收到任何事件。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法