mirror of
https://github.com/OTCv8/otclientv8.git
synced 2025-12-22 11:57:11 +01:00
Version 1.4 - Websockets and bug fixes
This commit is contained in:
91
tutorials/Websockets.md
Normal file
91
tutorials/Websockets.md
Normal file
@@ -0,0 +1,91 @@
|
||||
## OTClientV8 Websockets
|
||||
|
||||
From version 1.4 OTClientV8 supports websockets and secure websockets. They can be also used in bot.
|
||||
|
||||
### Usage
|
||||
```
|
||||
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`
|
||||
|
||||
### Websockets have 15s timeout by default, you can change it in `corelib/http.lua`
|
||||
|
||||
### WebSocket server
|
||||
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
|
||||
|
||||
### Example server in nodejs
|
||||
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
|
||||
Reference in New Issue
Block a user