This extension supports both secure (wss://
) and non secure (ws://
) websocket connections.
All platforms should support this extension.
Here is how you connect to a websocket and listen to events:
local function websocket_callback(self, conn, data)
if data.event == websocket.EVENT_DISCONNECTED then
print("Disconnected: " .. tostring(conn))
self.connection = nil
update_gui(self)
elseif data.event == websocket.EVENT_CONNECTED then
update_gui(self)
print("Connected: " .. tostring(conn))
elseif data.event == websocket.EVENT_ERROR then
print("Error: '" .. tostring(data.message) .. "'")
if data.handshake_response then
print("Handshake response status: '" .. tostring(data.handshake_response.status) .. "'")
for key, value in pairs(data.handshake_response.headers) do
log("Handshake response header: '" .. key .. ": " .. value .. "'")
end
print("Handshake response body: '" .. tostring(data.handshake_response.response) .. "'")
end
elseif data.event == websocket.EVENT_MESSAGE then
print("Receiving: '" .. tostring(data.message) .. "'")
end
end
function init(self)
self.url = "ws://echo.websocket.org"
local params = {}
self.connection = websocket.connect(self.url, params, websocket_callback)
end
function finalize(self)
if self.connection ~= nil then
websocket.disconnect(self.connection)
end
end
To use this library in your Defold project, add the following URL to your game.project
dependencies:
https://github.com/defold/extension-websocket/archive/master.zip
We recommend using a link to a zip file of a specific release.
The following configuration options can be set in the game.project file:
[websocket]
debug = 1
socket_timeout = 10000000
debug
- Log level where 0 means no logs and higher values shows more logs (currently 1 or 2).socket_timeout
- Timeout for the underlying socket connection. In microseconds.The source code is available on GitHub
https://defold.com/extension-websocket/api/ API Reference - websocket
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB