Difference between revisions of "Websocket"

From Lianjapedia
Jump to: navigation, search
(Methods)
(Example)
Line 86: Line 86:
 
lo.receivedMessage = receivedMessage
 
lo.receivedMessage = receivedMessage
 
lo.listen(8004)
 
lo.listen(8004)
 +
// or listen(8004, true) for secure SSL connection
 
wait events
 
wait events
 
</code>
 
</code>
Line 120: Line 121:
 
// connect to the remote WebSocket Server
 
// connect to the remote WebSocket Server
 
lo.connect("ws://localhost:8004");
 
lo.connect("ws://localhost:8004");
 +
        // or o.connect("wss://localhost:8004");  for a secure connection
  
 
// messages are queued up until the websocket is connected.
 
// messages are queued up until the websocket is connected.

Revision as of 05:16, 23 August 2021

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[,ssl as logical] Listens on the specified port (server). Is 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)

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)
// 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 o.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;
};