开发者

Grails - asynchronous communication with 3rd party API

I'm experimenting with grails in order to interface with an online trading platform.

specifically Interactive Brokers (IB) http://interactivebrokers.com/en/p.php?f=programInterface&ib_entity=llc

The way the API works is you need to have their client program, Trader Workstation (TWS http://interactivebrokers.com/en/p.php?f=tws&ib_entity=llc) running and then we consume the API to do stuff. Consuming the API basically involves creating a "broker" object, calling a connect() member function (this makes a local port connection to the TWS software) and calling something like getData()

The value of grails in this scenario are the GORM features and the web framework provided. I want to be able to define objects abstracted from db implementation, easily do persistance operations and easily provide users with a UI to do CRUD and custom actions.

My challenge is the IB API uses asynchronous communication for requests and replies. i.e. when i call getD开发者_JAVA百科ata(), the API knows to use the callback function dataResults() when it is ready to send them. In order for dataResults() to be callable, the broker object I created still needs to be around to receive the reply.

Inside a controller function, if i create a broker object and call getData(), when the request finishes, the broker object obviously also disappears. So I'll never be able to receive the reply.

I think there might be some way to do this by kicking off background threads but i'm not sure this is the path i want to go down.

Does anyone have any recommendations on what the best approach is?

I'm not married to grails, the reasons i'm using it are above. If there is a desktop app framework that I can also easily make a web interface on top of later, I'm definitely open to that.

thanks in advance.


Create your object in Service and make the Service singleton (which is by default):

static scope = "singleton"


In terms of web UI Grails is definitely a good choice. Then, the asynchronous operations could be handled by Ajax calls as you shouldn't block the controller waiting for results. The following [presentation][1] has some good examples

1: http://skillsmatter.com/podcast/java-jee/high-volume-scalable-ajax-with-grails

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜