Quick Apps — WebSocket client | FIBARO Dev

Quick Apps — WebSocket client

Home Center 3, Home Center 3 Lite and Yubii Home can act as a WebSocket or WebSocket Secure client.

WebSocket class methods

net.WebSocketClient(options), net.WebSocketClientTls(options)

WebSocketClient and WebSocketClientTls calsses constuctor. WebSocketClient handles ws (WebSocket) connections. WebSocketClientTls handles wss (WebSocket Secure) connections.

Example

1function QuickApp:onInit()
2    self.sock = net.WebSocketClientTls()
3end
1function QuickApp:onInit()
2    self.sock = net.WebSocketClient()
3end

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 fired when the event occurs.

Example

1    self.sock:registerEvent("connected", function() self:handleConnected() end)
2    self.sock:registerEvent("disconnected", function() self:handleDisconnected() end)
3    self.sock:registerEvent("error", function(error) self:handleError(error) end)
4    self.sock:registerEvent("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

1function QuickApp:onInit()
2    self:debug("onInit")
3    local url = self:getVariable("url") -- eg. wss://echo.websocket.org
4    self.sock = net.WebSocketClientTls()
5
6    self.sock:registerEvent("connected", function() self:handleConnected() end)
7    self.sock:registerEvent("disconnected", function() self:handleDisconnected() end)
8    self.sock:registerEvent("error", function(error) self:handleError(error) end)
9    self.sock:registerEvent("dataReceived", function(data) self:handleDataReceived(data) end)
10
11    self.sock:connect(url)
12end

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

1function QuickApp:turnOn()
2    self:debug("binary switch turned on")
3    self.sock:send("turnOn")
4    self:updateProperty("value", true)
5end

WebSocketClient.isOpen(), WebSocketClientTls.isOpen()

Returns if the socket is open.

Example

1function QuickApp:checkConnection()
2    if self.sock and self.sock:isOpen() then
3        self:updateView("label", "text", "Connected") 
4    else
5        self:updateView("label", "text", "Dissconnected")
6    end 
7end

WebSocketClient.close(address), WebSocketClientTls.close()

Closes the connection to the server.

Example

1function QuickApp:disconnectServer()
2    self.sock:close()    
3end

WebSocket events

connected

The event is emitted when the connection is properly established.

Example

1function QuickApp:onInit()
2    self:debug("onInit")
3    self.url = self:getVariable("url")
4    self.sock = net.WebSocketClientTls()
5
6    self.sock:registerEvent("connected", function() self:handleConnected() end)
7    self.sock:connect(self.url)    
8end
9
10function QuickApp:handleConnected()
11    self:trace("handleConnected")
12end

disconnected

The event is emitted when either the client or the server closes the socket.

Example

1function QuickApp:onInit()
2    self:debug("onInit")
3    self.url = self:getVariable("url")
4    self.sock = net.WebSocketClientTls()
5
6    self.sock:registerEvent("disconnected", function() self:handleConnected() end)
7end
8
9function QuickApp:handleDisconnected()
10    self:warning("handleDisconnected")
11end

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

1function QuickApp:onInit()
2    self:debug("onInit")
3    self.url = self:getVariable("url")
4    self.sock = net.WebSocketClientTls()
5
6    self.sock:registerEvent("error", function() self:handleConnected() end)
7end
8
9function QuickApp:handleError(error)
10    self:error("WebSocket error:", error)
11end

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

1function QuickApp:onInit()
2    self:debug("onInit")
3    self.url = self:getVariable("url")
4    self.sock = net.WebSocketClientTls()
5
6    self.sock:registerEvent("dataReceived", function(data) self:handleDataReceived(data) end)
7end
8
9function QuickApp:handleDataReceived(data)
10    self:trace("dataReceived:", data)
11end