IXWebSocket/luarocks/LuaWebSocket.h

92 lines
1.9 KiB
C
Raw Normal View History

2020-04-29 03:37:19 +02:00
#pragma once
2020-04-21 08:02:23 +02:00
#include <iostream>
#include <string>
extern "C"
{
#include "lua.h"
#include "lauxlib.h"
}
#include "luawrapper.hpp"
#include <ixwebsocket/IXWebSocket.h>
#include <chrono>
#include <thread>
2020-04-21 08:02:23 +02:00
using namespace ix;
2020-04-21 08:02:23 +02:00
WebSocket* WebSocket_new(lua_State* L)
2020-04-21 08:02:23 +02:00
{
WebSocket* webSocket = new WebSocket();
webSocket->setOnMessageCallback([](const WebSocketMessagePtr& msg) {
if (msg->type == ix::WebSocketMessageType::Message)
{
std::cout << msg->str << std::endl;
}
});
return webSocket;
2020-04-21 08:02:23 +02:00
}
int WebSocket_getUrl(lua_State* L)
2020-04-21 08:02:23 +02:00
{
WebSocket* webSocket = luaW_check<WebSocket>(L, 1);
lua_pushstring(L, webSocket->getUrl().c_str());
2020-04-21 08:02:23 +02:00
return 1;
}
int WebSocket_setUrl(lua_State* L)
2020-04-21 08:02:23 +02:00
{
WebSocket* webSocket = luaW_check<WebSocket>(L, 1);
const char* url = luaL_checkstring(L, 2);
webSocket->setUrl(url);
2020-04-21 08:02:23 +02:00
return 0;
}
int WebSocket_start(lua_State* L)
2020-04-21 08:02:23 +02:00
{
WebSocket* webSocket = luaW_check<WebSocket>(L, 1);
webSocket->start();
2020-04-21 08:02:23 +02:00
return 0;
}
int WebSocket_send(lua_State* L)
2020-04-21 08:02:23 +02:00
{
WebSocket* webSocket = luaW_check<WebSocket>(L, 1);
const char* msg = luaL_checkstring(L, 2);
webSocket->send(msg);
2020-04-21 08:02:23 +02:00
return 0;
}
int WebSocket_sleep(lua_State* L)
2020-04-21 08:02:23 +02:00
{
WebSocket* webSocket = luaW_check<WebSocket>(L, 1);
int duration = luaL_checkinteger(L, 2);
std::this_thread::sleep_for(std::chrono::milliseconds(duration));
2020-04-21 08:02:23 +02:00
return 0;
}
static luaL_Reg WebSocket_table[] = {
2020-04-21 08:02:23 +02:00
{ NULL, NULL }
};
static luaL_Reg WebSocket_metatable[] = {
{ "getUrl", WebSocket_getUrl },
{ "setUrl", WebSocket_setUrl },
{ "start", WebSocket_start },
{ "send", WebSocket_send },
{ "sleep", WebSocket_sleep },
2020-04-21 08:02:23 +02:00
{ NULL, NULL }
};
int luaopen_WebSocket(lua_State* L)
2020-04-21 08:02:23 +02:00
{
luaW_register<WebSocket>(L,
"WebSocket",
WebSocket_table,
WebSocket_metatable,
WebSocket_new
2020-04-21 08:02:23 +02:00
);
return 1;
}