Server to Client

swip

New Member
Hello,

my customers can create tasks and for example, if they forward it to someone else the other person need to get notified about it.
There are many tasks per user and I don't want to use a timer per client and ask the AppServer if there's any new data.
To reduce the load for the clients I would like to have the server itself check, if there is any new task for user x and then send a notification to the user.
And I don't want to have an open connection for this throughout the whole runtime, if possible.

Is this even possible with abl?

Kind regards
swip
 

tamhas

ProgressTalk.com Sponsor
Unless there is a compelling reason to do this entirely in ABL, there are a number of commercial packages that do this sort of thing superbly.
 

tamhas

ProgressTalk.com Sponsor
I would need to know more about the application before I could make any suggestions. Why don't you briefly describe sources, architecture, display intention, etc.
 

swip

New Member
Architecture:
We have a client application which is in a location with very limited network bandwith, that's why we close connections to the appserver after receiving our query data and open them again if we need it.
The client application runs also on little ressources, so we don't want to run timers periodically as we don't know how often and how long this could take in the end. The Database and AppServer is running on Windows Server 2008 and client application is running on windows citrix clients.
Intention:
The app has a viewcontrol which shows tasks for the user and the group he/she is in. When the user assigns a task to himself, the db entry of the task will update accordingly. Now we want that if an update to any task happens there should be message sent out to people in his group that a task was assigned or that they need to refresh the tasks before they can change something.
 

Cecil

19+ years progress programming and still learning.
Hi,
I spent a few nights updating my MQTT ABL CLIENT. The first version was basic and did not fully comply with the MQTT standards.
One thing that is part of MQTT standard is a 'Keep alive'. This is a requirement to periodically send out a 'PING Request' and get back a 'PING Response' from the MQTT Broker.
For me to get then 'pinging' to work I had to implement a 'PSTimer OCX control' because OpenEdge is not multi-threaded.

So going back to your original objective it makes sense to use the 'PSTimer' to periodically poll the AppServer for changes i.e. timestamp update field. It's not quite the real-time solution you were hoping for, but it will be a whole lot simpler to implement.

The problem you have is not with OpenEdge Technology, but with the infrastructure of your network with limited bandwidth.

Since the client app's location is limited by bandwidth, maybe the solution is to develop a Web PASOE application, then the overhead of connecting and data transfer is smaller?

Regards
James.
 

Cecil

19+ years progress programming and still learning.
Crazy idea... using a combination of Arduino nano (used as a virtual keyboard) and esp8266 (wifi / MQTT client) you could build a hardware device that subscribes to events and fires of a keyboard key event (i.e. SHIFT+F2). Your application could trigger an event on the SHIFT+F2 which then can be used to refresh a browse widget.
 

swip

New Member
Hi James, thank you for your answer. I think your project is very cool and I need to tinker around with this a bit. Your suggestion regarding the PSTimer OCX Control won't work for my project because we use Progress x64 only.
With Web PASOE application you mean a web app which utilizes the PASOE connections to send out data?
Could you elaborate on this, please? :)

I would love to do your crazy idea :D but I my customers will never accept this. :D
 

Cecil

19+ years progress programming and still learning.
Which version of progress are you using.
Because there is a 64 bit of the PStimer.
 
Top