|
|
Line 30: |
Line 30: |
| # When you are finished, close client or server using close method, which stops all timers, closes all connections and destroys instance | | # When you are finished, close client or server using close method, which stops all timers, closes all connections and destroys instance |
| | | |
− | == Client Method list == | + | === Framework === |
− | === Constructor ===
| + | {|- |
− | '''Method name''' new(config) | + | |style="width: 50%;"| |
| + | :::::::::::: |
| + | '''[[Unite Server Method list]]''' |
| | | |
− | '''Description''' Create client instance | + | |style="width: 50%;"| |
| + | :::::::::::: |
| + | '''[[Unite Server Event list]]''' |
| + | |} |
| | | |
− | '''Input parameters''' table config - lua table with configuration options:
| + | {|- |
− | *string username - username to display on devices (default: hostname or device's IP address)
| + | |style="width: 50%;"| |
− | *string ip - ip address to use for server (default: current device's IP address)
| + | :::::::::::: |
− | *int tcpPort - port to use for tcp connection (default: 5883)
| + | '''[[Unite Client Method list]]''' |
− | *int udpPort - port to use for udp connection (default: 5884)
| |
− | *int discoveryPort - port to use for device discovery (default: 5885)
| |
− | *int multicast - multicast ip address for device discovery (default: 239.192.1.1)
| |
− | *int serverIP - ip address of server, if no discovery needed and can connect tp server directly (default: nil)
| |
− | *string connectionType - which connection protocol to use tcp, udp or both (default: 'both')
| |
| | | |
− | '''Example'''
| + | |style="width: 50%;"| |
− | <syntaxhighlight lang="lua">
| + | :::::::::::: |
− | local serverlink = Client.new({
| + | '''[[Unite Client Event list]]''' |
− | username = "ar2rsawseen",
| + | |} |
− | ip = nil,
| |
− | port = 15000,
| |
− | multicast = "239.192.1.1",
| |
− | serverIP = nil,
| |
− | connectionType = "tcp"
| |
− | })
| |
− | </syntaxhighlight>
| |
− | | |
− | === Start Listening ===
| |
− | '''Method name''' startListening()
| |
− | | |
− | '''Description''' Start Listening to server, both when server is broadcasting/multicasting for discovery, or when client is already connected to server (for example, by providing it's ip address)
| |
− | | |
− | === Stop Listening ===
| |
− | '''Method name''' stopListening()
| |
− | | |
− | '''Description''' Stop Listening to server, both when server is broadcasting/multicasting for discovery, or when client is already connected to server
| |
− | | |
− | === Connect to specified Server ===
| |
− | '''Method name''' connect(id)
| |
− | | |
− | '''Description''' When server is broadcasting/multicasting, if client is not yet connected to any server, it recieves new server events with server ID. You need to provide that ID to connect method, to connect to specified server
| |
− | | |
− | '''Input parameters''' int id - server id received from new server event
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:connect(111222333)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Add Method ===
| |
− | '''Method name''' addMethod(name, method, scope)
| |
− | | |
− | '''Description''' Add method which can be called through the network by other devices
| |
− | | |
− | '''Input parameters''' Input parameters are similar to adding new event listener
| |
− | | |
− | string name - name of command to associate with this method, could be simply method name as string
| |
− | | |
− | function method - method that will be called from other connected devices. This function will be called by other devices, and all parameters provided by other devices will be passed to this function. Additionally, the last providd parameter will be the source of message - id of device from which message originated
| |
− | | |
− | object scope - scope to use for method, if for example using class method and not simple function, you can provide self variable if defined inside class, of class instance if defiend outside class (default: nil)
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addMethod("draw", self.draw, self)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Call Method ===
| |
− | '''Method name''' callMethod(...)
| |
− | | |
− | '''Description''' Call specific method for all connected devices
| |
− | | |
− | '''Input parameters''' string command - name of command, to call the method associated with this command
| |
− | | |
− | Other parameters can be any values, that will be passed to called method
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:callMethod("draw", 100, 200)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Call Method of specific device ===
| |
− | '''Method name''' callMethodOf(...)
| |
− | | |
− | '''Description''' Call specific method for specific connected devices
| |
− | | |
− | '''Input parameters''' string command - name of command, to call the method associated with this command
| |
− | | |
− | Other parameters can be any values, that will be passed to called method
| |
− | | |
− | Last parameter should be the ID of device, to which to send command
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:callMethodOff("draw", 100, 200, 111222333)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Get devices ===
| |
− | '''Method name''' getDevices()
| |
− | | |
− | '''Description''' Get ID of all devices connected to server. Due to limitation, that ID's of devices are retrieved through sockets on the network, this method does not return list of devices, but rather generates multiple "device" events, one for each connected device
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:getDevices()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Close Client ===
| |
− | '''Method name''' close()
| |
− | | |
− | '''Description''' Closes the client, disconnects it from server, disabled listening and erases ID. Serves as destructor for the class
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:close()
| |
− | </syntaxhighlight>
| |
− | | |
− | | |
− | == Server Method list ==
| |
− | === Constructor ===
| |
− | '''Method name''' new(config)
| |
− | | |
− | '''Description''' Create server instance
| |
− | | |
− | '''Input parameters''' table config - lua table with configuration options:
| |
− | *string username - username to display on devices (default: hostname or device's IP address)
| |
− | *string ip - ip address to use for server (default: curret devices IP address)
| |
− | *int tcpPort - port to use for tcp connection (default: 5883)
| |
− | *int udpPort - port to use for udp connection (default: 5884)
| |
− | *int discoveryPort - port to use for device discovery (default: 5885)
| |
− | *int multicast - multicast ip address for device discovery (default: 239.192.1.1)
| |
− | *int maxClients - maximal amount of clients server can serve (default: unlimited amount)
| |
− | *string connectionType - which connection protocol to use tcp, udp or both (default: 'both')
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | local serverlink = Server.new({
| |
− | username = "IAmAServer",
| |
− | ip = nil,
| |
− | port = 15000,
| |
− | multicast = "239.192.1.1",
| |
− | maxClients = 0,
| |
− | connectionType = "tcp"
| |
− | })
| |
− | </syntaxhighlight>
| |
− | | |
− | === Start Broadcasting ===
| |
− | '''Method name''' startBroadcast()
| |
− | | |
− | '''Description''' Start Broadcasting to clients, both broadcast and multicast to discover other listening devices. Broadcasting includes listening, so if server is broadcasting, there is no need to call startListening method
| |
− | | |
− | === Stop Broadcasting ===
| |
− | '''Method name''' stopBroadcast()
| |
− | | |
− | '''Description''' Stop Broadcasting to clients
| |
− | | |
− | === Start Listening ===
| |
− | '''Method name''' startListening()
| |
− | | |
− | '''Description''' Start Listening to clients
| |
− | | |
− | === Stop Listening ===
| |
− | '''Method name''' stopListening()
| |
− | | |
− | '''Description''' Stop Listening to clients | |
− | | |
− | === Accept specified Client ===
| |
− | '''Method name''' accept(id)
| |
− | | |
− | '''Description''' When client responded to broadcasting/multicasting message, server recieves new client events with client ID. You need to provide that ID to accept method, to accept specified client
| |
− | | |
− | '''Input parameters'''
| |
− | int id - client id received from new client event
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:accept(111222333)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Add Method ===
| |
− | '''Method name''' addMethod(name, method, scope)
| |
− | | |
− | '''Description''' Add method which can be called through the network by other devices
| |
− | | |
− | '''Input parameters''' Input parameters are similar to adding new event listener
| |
− | | |
− | string name - name of command to associate with this method, could be simply method name as string
| |
− | | |
− | function method - method that will be called from other connected devices. This function will be called by other devices, and all parameters provided by other devices will be passed to this function. Additionally, the last providd parameter will be the source of message - id of device from which message originated
| |
− | | |
− | object scope - scope to use for method, if for example using class method and not simple function, you can provide self variable if defined inside class, of class instance if defiend outside class (default: nil)
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addMethod("draw", self.draw, self)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Call Method ===
| |
− | '''Method name''' callMethod(...)
| |
− | | |
− | '''Description''' Call specific method for all connected devices
| |
− | | |
− | '''Input parameters''' string command - name of command, to call the method associated with this command
| |
− | | |
− | Other parameters can be any values, that will be passed to called method
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:callMethod("draw", 100, 200)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Call Method of specific device ===
| |
− | '''Method name''' callMethodOf(...)
| |
− | | |
− | '''Description''' Call specific method for specific connected devices
| |
− | | |
− | '''Input parameters''' string command - name of command, to call the method associated with this command
| |
− | | |
− | Other parameters can be any values, that will be passed to called method
| |
− | | |
− | Last parameter should be the ID of device, to which to send command
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:callMethodOff("draw", 100, 200, 111222333)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Get devices ===
| |
− | '''Method name''' getDevices()
| |
− | | |
− | '''Description''' Get ID of all devices connected to server. Due to limitation, that ID's of devices are retrieved through sockets on the network, this method does not return list of devices, but rather generates multiple "device" events, one for each connected device
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:getDevices()
| |
− | </syntaxhighlight>
| |
− | | |
− | === Close Server ===
| |
− | '''Method name''' close()
| |
− | | |
− | '''Description''' Closes the server, disconnects all clients, disables listening and/or broadcasting and erases ID. Serves as destructor for the class
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:close()
| |
− | </syntaxhighlight>
| |
− | | |
− | | |
− | == Client Event list ==
| |
− | === Device Event ===
| |
− | '''Event name''' device | |
− | | |
− | '''Description''' Events spawned after calling getDevices method
| |
− | | |
− | '''Event properties'''
| |
− | *e.data.id - id of client
| |
− | *e.data.ip - ip address of client
| |
− | *e.data.host - username or hostname of client or ip if no hostname provided
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addEventListener("device", function(e)
| |
− | print(e.data.id)
| |
− | print(e.data.ip)
| |
− | print(e.data.host)
| |
− | end)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Accept Event ===
| |
− | '''Event name''' onAccepted
| |
− | | |
− | '''Description''' Event called when server accepted connection from this client
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addEventListener("onAccepted", function(e)
| |
− | print("connection accepted")
| |
− | end)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Server closed Event ===
| |
− | '''Event name''' onServerClose
| |
− | | |
− | '''Description''' Event called when server is unreachable
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addEventListener("onServerClose", function(e)
| |
− | print("server closed connection")
| |
− | end)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Another Client closed Event ===
| |
− | '''Event name''' onClientClose
| |
− | | |
− | '''Description''' Event called when another client connected to the same server becomes unreachable
| |
− | | |
− | '''Event properties'''
| |
− | *e.data.id - id of client that disconnects
| |
− | | |
− | '''Example'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addEventListener("onClientClose", function(e)
| |
− | print("client "..e.data.id.." closed connection")
| |
− | end)
| |
− | </syntaxhighlight>
| |
− | | |
− | | |
− | == Server Event list ==
| |
− | === Device Event ===
| |
− | '''Event name''' device
| |
− | | |
− | '''Description''' Events spawned after calling getDevices method
| |
− | | |
− | '''Event properties'''
| |
− | *e.data.id - id of client
| |
− | *e.data.ip - ip address of client
| |
− | *e.data.host - username or hostname of client or ip if no hostname provided
| |
− | | |
− | '''Example input'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addEventListener("device", function(e)
| |
− | print(e.data.id)
| |
− | print(e.data.ip)
| |
− | print(e.data.host)
| |
− | end)
| |
− | </syntaxhighlight>
| |
− | | |
− | === Client closed connection Event ===
| |
− | '''Event name''' onClientClose
| |
− | | |
− | '''Description''' Event called when one of the clients is unreachable
| |
− | | |
− | '''Event properties'''
| |
− | *e.data.id - id of client
| |
− | | |
− | '''Example input'''
| |
− | <syntaxhighlight lang="lua">
| |
− | serverlink:addEventListener("onClientClose", function(e)
| |
− | print(e.data.id)
| |
− | end)
| |
− | </syntaxhighlight>
| |
| | | |
| | | |