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"
|
2020-04-29 04:11:06 +02:00
|
|
|
#include <ixwebsocket/IXWebSocket.h>
|
|
|
|
#include <chrono>
|
|
|
|
#include <thread>
|
2020-04-21 08:02:23 +02:00
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
using namespace ix;
|
2020-04-21 08:02:23 +02:00
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
WebSocket* WebSocket_new(lua_State* L)
|
2020-04-21 08:02:23 +02:00
|
|
|
{
|
2020-04-29 04:11:06 +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
|
|
|
}
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
int WebSocket_getUrl(lua_State* L)
|
2020-04-21 08:02:23 +02:00
|
|
|
{
|
2020-04-29 04:11:06 +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;
|
|
|
|
}
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
int WebSocket_setUrl(lua_State* L)
|
2020-04-21 08:02:23 +02:00
|
|
|
{
|
2020-04-29 04:11:06 +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;
|
|
|
|
}
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
int WebSocket_start(lua_State* L)
|
2020-04-21 08:02:23 +02:00
|
|
|
{
|
2020-04-29 04:11:06 +02:00
|
|
|
WebSocket* webSocket = luaW_check<WebSocket>(L, 1);
|
|
|
|
webSocket->start();
|
2020-04-21 08:02:23 +02:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
int WebSocket_send(lua_State* L)
|
2020-04-21 08:02:23 +02:00
|
|
|
{
|
2020-04-29 04:11:06 +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;
|
|
|
|
}
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
int WebSocket_sleep(lua_State* L)
|
2020-04-21 08:02:23 +02:00
|
|
|
{
|
2020-04-29 04:11:06 +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;
|
|
|
|
}
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
static luaL_Reg WebSocket_table[] = {
|
2020-04-21 08:02:23 +02:00
|
|
|
{ NULL, NULL }
|
|
|
|
};
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
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 }
|
|
|
|
};
|
|
|
|
|
2020-04-29 04:11:06 +02:00
|
|
|
int luaopen_WebSocket(lua_State* L)
|
2020-04-21 08:02:23 +02:00
|
|
|
{
|
2020-04-29 04:11:06 +02:00
|
|
|
luaW_register<WebSocket>(L,
|
|
|
|
"WebSocket",
|
|
|
|
WebSocket_table,
|
|
|
|
WebSocket_metatable,
|
|
|
|
WebSocket_new
|
2020-04-21 08:02:23 +02:00
|
|
|
);
|
|
|
|
return 1;
|
|
|
|
}
|