Websocket
From Lianjapedia
Revision as of 21:28, 16 October 2021 by Barrymavin (Talk | contribs)
The Websocket class allows an application to handle asynchronous notifications from a remote server.
This class is available on the client in a browser and on the server. You typically run a background websocket task using lianjarun. Be sure to open up the port you are using on your server firewall.
Typical uses of websockets are to handle low latency messages between a client browser and the server where near real time response is required.
Note: property, method and event names should be referred to in lowercase in case-sensitive scripting languages.
Properties
This class supports the following properties:
Property | Access (R/RW) | Value | Description |
---|---|---|---|
onconnected | RW | Function | Function to call when socket connected |
ondisconnected | RW | Function | Function to call when socket disconnected |
onerror | RW | Function | Function to call when error occurred |
receivedmessage | RW | Function | Function to call when message received |
Methods
This class supports the following methods:
Method | Args | Description |
---|---|---|
connect | url as Character | Connects to the server |
disconnect | None | Disconnects from the server |
listen | port as Numeric[,ssl as logical] | Listens on the specified port (server). If ssl is true then use wss:/ to connect using secure connection on client else use ws:/ |
sendmessage | message as Character | Sends the specified message to the server (from client) |
sendmessage | websocketid as Numeric, message as Character | Sends the specified message to the specified web socket id (from server) |
setpathtocertificate | filename as Character e.g. myserver.crt or myserver.pem | Specifies the path to the certificate file for an SSL connection (server) |
setpathtoprivatekey | filename as Character e.g myserver.key or myserver.pem | Specifies the path to the private key file for an SSL connection (server) |
setpathtocacertificatedir | path as Character e.g /etc/ssl/certs | Specifies the path to the CA for an SSL connection (server) |
Example
Server side LianjaScript (.prg):
// This is the callback for all messages received on the websocket. // // Arguments: // // wsid is the WebSocketID, you must specify this when sending a message back to the client using sendMessage // cMessage is the message. Use json_encode() and json_decode() to pass objects between the client and the server. // proc receivedMessage(wsid, cMessage) if cMessage = "quit" clear events endif lo.sendMessage(wsid, cMessage) endproc private lo = createObject("websocket") lo.receivedMessage = receivedMessage lo.listen(8004) // or listen(8004, true) for secure SSL connection wait events
Client side JavaScript function:
//////////////////////////////////////////////////////////////// // Event delegate for 'click' event function page1_section1_field1_click() { var lo = Lianja.createObject("websocket"); // declare callbacks lo.receivedMessage = function(cMessage) { console.log("Received message: " + cMessage); }; lo.onconnected = function() { console.log("onconnected()"); }; lo.ondisconnected = function() { console.log("ondisconnected()"); }; lo.onerror = function() { console.log("onerror()"); }; // connect to the remote WebSocket Server lo.connect("ws://localhost:8004"); // or lo.connect("wss://localhost:8004"); for a secure connection // messages are queued up until the websocket is connected. lo.sendMessage("Hello world"); lo.sendMessage("quit"); // disconnect is deferred until all messages are sent and received lo.disconnect(); return true; };