-
Notifications
You must be signed in to change notification settings - Fork 191
WebSockets
From version 1.4 OTClientV8 supports websockets and secure websockets. They can be also used in bot.
local url = "ws://otclient.ovh/"
local websocket = HTTP.WebSocket(url, {
onOpen = function(message, websocketId)
end,
onMessage = function(message, websocketId)
end,
onClose = function(message, websocketId)
end,
onError = function(message, websocketId)
end
})
-- it returns
print(websocket.id)
print(websocket.url)
websocket.send("Hello")
scheduleEvent(function()
websocket.close()
end, 5000)
If your websocket is only using json then you can use HTTP.WebSocketJSON
local url = "wss://otclient.ovh:3000/"
local websocket = HTTP.WebSocketJSON(url, {
onOpen = function(message, websocketId)
end,
onMessage = function(message, websocketId)
-- message is table, after json.decode
end,
onClose = function(message, websocketId)
end,
onError = function(message, websocketId)
-- will also return json errors
end
})
-- it returns
print(websocket.id)
print(websocket.url)
websocket.send({message="Hello"})
scheduleEvent(function()
websocket.close()
end, 5000)
A working example with reconnect can be found in client_entergame/entergame.lua
Creating websocket server is easy, here are some links: https://github.com/websockets/ws https://medium.com/@martin.sikora/node-js-websocket-simple-chat-tutorial-2def3a841b61 https://medium.com/hackernoon/implementing-a-websocket-server-with-node-js-d9b78ec5ffa8
Personally, I use: https://github.com/uNetworking/uWebSockets https://github.com/uNetworking/uWebSockets.js
You need to install nodejs and then npm install uNetworking/uWebSockets.js#v16.4.0
Name it server.js and run it by using command: nodejs server.js
require('uWebSockets.js').App().ws('/*', {
message: (ws, message, isBinary) => {
console.log("message");
let ok = ws.send(message, isBinary);
}
}).any('/*', (res, req) => {
/* Let's deny all Http */
res.end('Nothing to see here!');
}).listen(9000, (listenSocket) => {
if (listenSocket) {
console.log('Listening to port 9000');
}
});
More examples: https://github.com/uNetworking/uWebSockets.js/tree/master/examples