Table of contents
- WebSocket class methods
- net.WebSocketClient(options)
- net.WebSocketClientTls(options)
- WebSocketClient.addEventListener(eventName, callback), WebSocketClientTls.addEventListener(eventName, callback)
- WebSocketClient.connect(url), WebSocketClientTls.connect(url)
- WebSocketClient.send(data), WebSocketClientTls.send(data)
- WebSocketClient.isOpen(), WebSocketClientTls.isOpen()
- WebSocketClient.close(address), WebSocketClientTls.close()
- WebSocket events
FIBARO Home Center 3 can act as a WebSocket or WebSocket Secure client.
WARNING: this function is available only on Home Center 3 with firmware 5.041 or higher.
WebSocket class methods
net.WebSocketClient(options)
WebSocketClient class constructor.
WebSocketClient handles ws (WebSocket) connections.
Example
1 2 3 |
function QuickApp:onInit() self.sock = net.WebSocketClient() end |
net.WebSocketClientTls(options)
WebSocketClientTls class constructor.
WebSocketClientTls handles wss (WebSocket Secure) connections.
Example
1 2 3 |
function QuickApp:onInit() self.sock = net.WebSocketClientTls() end |
WebSocketClient.addEventListener(eventName, callback), WebSocketClientTls.addEventListener(eventName, callback)
Add a listener for WebSocket events.
Parameters
- eventName –
string
with the name of the event to listen to. Possible events names:connected
,disconnected
,error
,dataReceived
. Events description is available in the ‘WebSocket events’ section. - callback –
function
that will be called when the event occurs.
Example
1 2 3 4 |
self.sock:addEventListener("connected", function() self:handleConnected() end) self.sock:addEventListener("disconnected", function() self:handleDisconnected() end) self.sock:addEventListener("error", function(error) self:handleError(error) end) self.sock:addEventListener("dataReceived", function(data) self:handleDataReceived(data) end) |
WebSocketClient.connect(url), WebSocketClientTls.connect(url)
The method establishes the connection to the specified url.
Parameters
- url –
string
containing the URL of the server.
Example
1 2 3 4 5 6 7 8 9 10 11 12 |
function QuickApp:onInit() self:debug("onInit") local url = self:getVariable("url") -- eg. wss://echo.websocket.org self.sock = net.WebSocketClientTls() self.sock:addEventListener("connected", function() self:handleConnected() end) self.sock:addEventListener("disconnected", function() self:handleDisconnected() end) self.sock:addEventListener("error", function(error) self:handleError(error) end) self.sock:addEventListener("dataReceived", function(data) self:handleDataReceived(data) end) self.sock:connect(url) end |
WebSocketClient.send(data), WebSocketClientTls.send(data)
The method for sending data. The connection must be correctly established for proper operation.
Parameters
- url –
string
containing url of the server
Example
1 2 3 4 5 |
function QuickApp:turnOn() self:debug("binary switch turned on") self.sock:send("turnOn") self:updateProperty("value", true) end |
WebSocketClient.isOpen(), WebSocketClientTls.isOpen()
The method returns true
if the socket is open or false
if the socket is closed.
Example
1 2 3 4 5 6 7 |
function QuickApp:checkConnection() if self.sock and self.sock:isOpen() then self:updateView("label", "text", "Connected") else self:updateView("label", "text", "Disconnected") end end |
WebSocketClient.close(address), WebSocketClientTls.close()
The method closes the connection to the server.
Example
1 2 3 |
function QuickApp:disconnectServer() self.sock:close() end |
WebSocket events
connected
The event is emitted when the connection is properly established.
Example
1 2 3 4 5 6 7 8 9 10 11 12 |
function QuickApp:onInit() self:debug("onInit") self.url = self:getVariable("url") self.sock = net.WebSocketClientTls() self.sock:addEventListener("connected", function() self:handleConnected() end) self.sock:connect(self.url) end function QuickApp:handleConnected() self:trace("handleConnected") end |
disconnected
The event is emitted when either the client or the server closes the socket.
Example
1 2 3 4 5 6 7 8 9 10 11 |
function QuickApp:onInit() self:debug("onInit") self.url = self:getVariable("url") self.sock = net.WebSocketClientTls() self.sock:addEventListener("disconnected", function() self:handleConnected() end) end function QuickApp:handleDisconnected() self:warning("handleDisconnected") end |
error
The event is emitted when an error occurs. An error can occur while connecting or sending data to the server. The error message is passed as a string
to the callback
function.
Example
1 2 3 4 5 6 7 8 9 10 11 |
function QuickApp:onInit() self:debug("onInit") self.url = self:getVariable("url") self.sock = net.WebSocketClientTls() self.sock:addEventListener("error", function() self:handleConnected() end) end function QuickApp:handleError(error) self:error("WebSocket error:", error) end |
dataReceived
The event is emitted when any data is received by the socket. Received data is passed as a string
to the callback
function.
Example
1 2 3 4 5 6 7 8 9 10 11 |
function QuickApp:onInit() self:debug("onInit") self.url = self:getVariable("url") self.sock = net.WebSocketClientTls() self.sock:addEventListener("dataReceived", function(data) self:handleDataReceived(data) end) end function QuickApp:handleDataReceived(data) self:trace("dataReceived:", data) end |