You can use the following functions or APIs to manage user session(s) for the installable cloud application:
-
The GetSessionID function of the PowerBuilder Application object -- Gets the session ID of the current client.
-
The LoadAll API provided by the SessionController.cs file in the PowerServer C# solution -- Gets the session IDs of all clients. Refer to View documentations for PowerServer Management APIs for how to view the documentation of this API.
-
The KillByID API provided by the SessionController.cs file in the PowerServer C# solution -- Kills the session(s) according to the ID. Refer to View documentations for PowerServer Management APIs for how to view the documentation of this API.
To get the session ID of the current application client, you can write PowerScripts as below:
String ls_SessionID ls_SessionID = Getapplication().GetSessionID()
To get all user sessions, you can write PowerScripts as below:
//-------------------------------------LoadAll-----------------------------------------
httpclient lhc_client
string ls_url
string ls_json
lhc_client = create httpclient
//GetSessions
ls_url = "http://localhost:5000/api/Session/LoadAll"
//This URL should be replaced with the actual IP address and port number of PowerServer Web APIs
//If there are multiple .NET servers, obtain one by one
//lhc_client.SetRequestHeader("Authorization", $token, true) //If authentication is enabled
lhc_client.sendrequest("Get",ls_url)
if lhc_client.getresponsestatuscode() = 200 then
lhc_client.getresponsebody(ls_json)
//parse the json
//wf_getsessions(ls_json)
end if
//-------------------------------------------------------------------------------------------------
To kill the specified user session, you can write PowerScripts as below:
Step 1: Get all the user sessions first.
Step 2: Kill the specified session according to the session ID.
The session information returned will look like this:
//[{"sessionid":"8e3f5c6d-7515-4377-9a45-0e3349fcbfd2","application":"SalesApp","sessionstate":"Actived","ipaddress":"127.0.0.1","serveripaddress":"127.0.0.1:5000","duration":101,"createtime":"2021-07-27T03:33:52.2616578Z","lastvisittime":"2021-07-27T03:33:52.6032097Z"}]
//-------------------------------------KillByID-----------------------------------------------
httpclient lhc_client
string ls_url
string ls_sessionid
lhc_client = create httpclient
//GetSessions
//lhc_client.SetRequestHeader("Authorization", $token, true) //If authentication is enabled
ls_url = "http://localhost:5000/api/Session/KillById"
//This URL should be replaced with the actual IP address and port number of PowerServer Web APIs
ls_sessionid = "8e3f5c6d-7515-4377-9a45-0e3349fcbfd2"
ls_url += "/"+ls_sessionid
lhc_client.sendrequest("post",ls_url)
if lhc_client.getresponsestatuscode() = 200 then
messagebox("succeed",ls_sessionid +" was killed")
end if
//-------------------------------------------------------------------------------------------------------------------