Websocket

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.

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 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)

Example

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
    endif
    lo.sendMessage(wsid, cMessage)
endproc 
 
private lo = createObject("websocket")
lo.receivedMessage = receivedMessage
lo.listen(8004)
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");
 
	// 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;
};