From Lianjapedia
Jump to: navigation, search

The Websocket class allows the application to handle asynchronous notifications from a remote server.

Note: property, method and event names should be referred to in lowercase in case-sensitive scripting languages.


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


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 Listens on the specified port (server)
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)


Server side Lianja/VFP Script (.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
    lo.sendMessage(wsid, cMessage)
private lo = createObject("websocket")
lo.receivedMessage = receivedMessage
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()
	lo.ondisconnected = function()
	lo.onerror = function()
	// connect to the remote WebSocket Server
	// messages are queued up until the websocket is connected.
	lo.sendMessage("Hello world");
	// disconnect is deferred until all messages are sent and received
	return true;