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 -
stringwith 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 -
functionthat 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 -
stringcontaining 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 -
stringcontaining 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