Is there a way of combining Ogre3d's Hikari and BlazeDS? - apache-flex

I am trying to load a swf into an Ogre3d/Hikari application and that swf uses BlazeDS to communicate with a Tomcat server. The swf is from another project that is used in a browser environment. So, the swf is served from Tomcat to the client's browswer. It seems like there are two main issues. The first is a sandbox issue with using the swf in a different sandbox type than a browser environment. The other issue seems to be setting up the BlazeDS message broker and the other communication channels and endpoints.
As far as both of the issues are concerned, it seems like the Hikari application is similar to an Adobe Air application and can use similar approaches.
Does this seem like a reasonable approach? Does anybody have any similar experiences? If so, how were things configured?

Never tried what you want, but for the endpoints I suggest to use the same approach as in AIR (instead of using variables like {server} use hard coded endpoints).

Related

Python QT on Azure

I'm using Python and QT (PySide) in a local application (which connect to a database on cloud Azure).
Now, my objective is moving this app on the web, in particular on Azure (I have an Azure subscription), simply transfering it on Azure, it's possible in some manner? I have not found examples on the web.
The important question is: is Python QT (app web) compatible with Azure?
Thanks
UPDATED ANSWER!
Yes, now you can. Well sort of. The mad mads at Digia have created something called "QT for Web Assembly" that can compile your whole app into something that runs embedded into a web page.
https://doc.qt.io/qtcreator/creator-setup-webassembly.html
You might have to rethink connecting directly to the database however, as thats simply not gonna fly with web-sockets (And honestly direct app to remote RDBMS has never been a smart move. Theres a LOT of things that can go wrong letting the internet connnect to your databaes). But you could at least keep the UI and rewrite the databaes layer to interogate something like a GraphQL (or whatever) front end to the data.
OLD ANSWER
I'm afraid your up for a nearly complete rewrite. QT is a desktop/mobile platform. It doesn't go anywhere near HTML/CSS except perhaps for displaying them in a webview component. Azure or AWS won't magically make it into a web application for you.
Your code as it stands needd to be rewritten in a web-first transactional manner. That is it takes a request, processes it, produces a result. To some extent websockets has changed this dynamic for a limited subset of use cases where interaction needs to be non transactional, and modern web app design hides much of the transactionality behind a web-services model, but 90% of web work is still very much transactional.
Database <---> Web server/Web app stack <--- Internet! --> Web browser
My suggestion is to pick up Django (or one of the other systems. If its just simple, Flask is another good alternative. Flask for simple apps, Django for the big stuff. Or use something else, you have choices here!, and start from scratch. Analyse your products function and start mapping out how to make this work as a database driven transactional system.
Theres no shortcuts here, I'm afraid.

If the browser is left open for an extended period of time, website is getting crashed

We have developed a website. This will be deployed in IIS in server machine of a network. n number of people will access our website from their allocated pc's. What happens now is, if the browser is left open for an extended period of time, it is getting crashed, then i will have to reload the page to get access to my site. What should i do to overcome this problem?
Please advise on this.
Thanks
Venkat
You havent provided much information here so cant really comment anything specific (for e.g. runtime env, database servers, any specific tech. in use such as TCP/IP, web sockets.
There can be number of things that you could look into.
For the start you could look into resources that are not being disposed properly. For e.g. Database connection, large in memory .NET objects for e.g. file streams. Now this could be something as simple as using statements or exception handling(if .NET).
You could use profiler applications such as MiniProfiler (do google), Again if its Microsoft then you could use Microsoft Load Testing to see where the problem is.
Try using fiddler to see if it shows anything.
If you are using TCP/IP communication for e.g. push notifications from server side using websockets or node.js then you need to investigate if there are any threads/connections not properly closed/disposed.
list is sort of endless.. good luck

Mobile App Using Remote Web Server

I must say that I am reaching the end of my tether with Flash Builder and Flex. Firstly, I have built this wonderful app that I want to start using but it is data driven meaning that when I built it, I created it on my localhost. The PHP scripts were generated from Flash Builder and I have edited them to make them more secure. I have all my services working 100% and I have this brilliant app, but I can only run it on localhost. I have done everything necessary and installed Zend Framework on both servers, I have configured Zend properly but I cannot work out how to change the mobile app to now read from my remote web server.
To me this is useless as I want to be able to deploy this app to others to use when they are out and about.
Does anyone have any clue whatsoever as to how to change it from looking at a localhost to looking to my remote web host? Any tutorials or anything that you can think of? Any help would be appreciated.
Does anyone have any clue whatsoever as to how to change it from
looking at a localhost to looking to my remote web host?
Usually, I don't have to do anything. It just works. But, for some reason, the "first migration" from localhost to production seems to be hard for every Flex developer. Here are some things I wrote about that frustrated me.
Before moving forward; I'll add that your post is inherently confusing. You talk about running your app on localhost; but you also talk about building mobile apps. Were you building a native mobile app? If so; how are you running it on localhost? Mobile Native Apps don't run on a local web server; they run in an emulator.
The rest of this post assumes you are building a browser based app, but even if not should give you some good debugging tips.
Most likely you did something ignorantly which is preventing things from working. Once you figure it out you'll never have the problem again. So, here are some things to check:
It sounds like you have URLs hard coded somewhere within your app that point to localhost. I'd look for that first.
If you're using AMF with RemoteObject; it may be in your services-config file that is hard coded into your app. Be sure to check that if you are compiling a services-config into your app.
Beyond that, it is possible that your remote server is not configured properly. When using ColdFusion we have a special URL ( localhost/flex2gateway ) that we can check to verify that Flash Remoting is set up properly. I'm not sure about PHP, but I bet it is something similar.
You didn't tell us your specific setup, but if you're using a locahost SWF with services on you remote server, your remote server will need a crossdomain.xml file to allow the "off-server" access.
You didn't tell us your specific error, which makes it hard to provide more information. But, be sure to test your services--outside of the Flex app--to make sure they don't have remote errors. Be sure to check case sensitivity of URLs on your localhost vs your server. Be sure to use a Network Sniffer such as the Flash Builder Network Monitor to or ServiceCapture or Charles to check the traffic being sent from the browser/Flash Player to your server. You may discover errors that way.

Loading external SWFs into an Adobe AIR application - Best Practices?

I've recently been slated with a task to port an existing Flash Player-base game to a desktop app for publication on the Steam platform. The Adobe AIR framework seems like a logical choice for distribution, especially given the latest updates in AIR 3. Given the fact that I'm relatively new to flash/flex development, I've read through a fair amount of AIR documentation on the Adobe site in order to gain a better understanding of what the task involves. In general, I think I have a decent idea of what needs to happen, but there are a couple of wrinkles that may affect if/how it is even possible to port to the AIR framework:
The AIR application will need to load the actual game client from an external server due to the quick turnaround time of the client development.
Since the AIR application will be deployed on Steam, I want to use the Captive Runtime bundling that's available in AIR 3.0, i.e. no need for the user to 'OK' a separate AIR installation.
Have minimal impact on code changes within the external SWF as I'm not the primary developer of the game.
My first priority is to figure out the best approach for loading an external game client SWF into an AIR application. Initially, I tried to utilize Loader.load(), but that resulted in the following exception:
SecurityError: Error #2070: Security sandbox violation: caller http://localhost/MyClient.swf cannot access Stage owned by app:/AS3_AIRTest.swf.
at flash.media::SoundMixer$/set soundTransform()
at com.company.client.sound::SFXManager$/load()
at global/client.util::loadEmbeddedSounds()
at MyClient()
The offending code is:
static public function load():void {
SoundMixer.soundTransform =
new SoundTransform(Client.Settings.PlaySFX ? 1 : 0);
}
Upon hitting this exception, I decided to read up a bit more on the AIR / Flash player security domains. I have a much clearer understanding of why the exception occurred, but I'm still uncertain what the best approach would be to load the SWF and not receive the exception above.
After scouring through numerous posts on various forums, I found that a number of developers use Loader.loadBytes() to bring the SWF into the application sandbox. From an ease of implementation standpoint, I can see why many choose to go that route; however, I'm not inclined to pursue that approach due the potential dangers to user systems in the event that the external server is compromised.
The second approach that I've read about is that I can utilize a sandbox script bridge, and write an interface to grant certain privileges to the external client SWF. I'm hesitant to go this route at the moment because the game client is fairly complex, and I'm not entirely certain how much access it will require of the stage via different flash APIs. I haven't written this approach off as it sounds like it may be the best bet, but it could potentially be a large endeavor and I want to have minimal impact on the client SWF.
The final approach I've read about is by making an HTML AIR application. My understanding (sketchy at best) is that a SWF loaded via HTML (I believe in a frame/iframe) will have its own stage. My line of thinking is that if the HTML app loads a main page, which in turn has an iframe with SWF embed of the game client, then the client SWF will load in a remote security sandbox and have access to its own stage. My hope is that the SWF would behave as it does in the Flash Player.
This leads me to the following questions:
Is my line of thinking correct about the HTML app?
Would the client SWF have access to its own stage and pretty much behave like it does in the Flash Player?
Can HTML-based AIR applications be bundled with the captive runtime?
Can I use a traditional flex application with HTMLLoader to accomplish the same goal or does it need to be a full-blown HTML app?
If HTMLLoader can be used, would I need to provide the sandbox script bridge meta tags in the iframe tag?
Any help would be very much appreciated at this point. It seems like there are a number of options available, but I'm not sure which path is the right one to pursue at this point in time.
Thank again.
Josh
You have already investigated a lot. I was going to mention Loader.loadBytes technique but you mentioned that it is not secure. Actually, you could take care of security if you knew the signed hashes of the SWFs that may be downloaded. I remember to have read this approach in a AIR team's manager's blog but I can't recollect the link at this time. Basically, the approach would work if you knew all of the SWFs before hand that could be downloaded, and then generated their signed-hashs and put those hashes in an XML which shipped with the initial AIR app. Then, the initial AIR app can download those SWFs, compare their signatures and load them in application sandbox if it matches up with shipped hashes etc.
(Long question with lots of points, but here goes)
You are correct that passing the Stage object through a script bridge isn't going to work. So, removing the code that accesses the stage and possibly using the script bridge to get the job done in each specific case would be necessary.
If you embed the SWF in an HTML page, it will indeed get its own stage. It does not matter whether this is an "HTML-based" AIR application or an ActionScript-based application that uses the HTMLLoader. (Really the two are the same thing.) You don't need an iframe for this. This sounds like the easiest approach, especially if you aren't adding many AIR-specific features.
For information on signing, see http://www.adobe.com/devnet/air/flex/quickstart/articles/xml_signatures.html
The other thing I'd look at, if you haven't already, is what facilities Steam offers for doing such updates. Is the turn around time for uploading a new project/update to Steam really greater than the time it would take to add this post-install update system to the app itself? (I hope you aren't in one of those Dilbertian situations where, on paper, it looks like you can save time by doing weird things. In my experience, miracles created by dragging sliders around in Microsoft Project (or the like) don't pan out.)

deploying flex applications

I have a Flex application which has to be deployed in some server. The typical form of access would be invoking the URL. How do i go about it?
Should I have multiple instances of the applications running on the same server/ deploying the application in diff servers and using a load balancer for routing?
If i must have multiple instances, how to do that?
On a given day, the application is expected to get around 2000-3000 hits. What are all the factors to be kept in mind while deployment?
Any pointers would be helpful.
thanks.
I'm actually a bit unsure what specifically you're asking, so I'll take your questions one by one.
I have a Flex application which has to
be deployed in some server. The
typical form of access would be
invoking the URL. How do i go about
it?
Put your SWF files on a web server. For best results export a release build first. Flash Builder makes this easy.
Should I have multiple instances of
the applications running on the same
server/ deploying the application in
diff servers and using a load balancer
for routing?
Probably not, but it depends. A SWF is just a binary asset. As far as the server is concerned it is no different from a JPG, gif, or PNG file. Whether or not you need a load balancer to serve the SWF depends on the size of the SWF, the amount of simultaneous hits you expect, other traffic on the server, bandwidth of your hosting provider, and probably a whole slew of other considerations that escape me at the moment.
If your SWF is making calls to the server--very common in Flex Applications--that may also be a consideration.
If i must have multiple instances, how
to do that?
If you have multiple instances of what? Of the SWF? Why would you need to do that? As I said, as far as the server is concerned a SWF is just a binary asset. In theory you could keep as many copies of the file on your server as you want, in practice most people just use a single one.
On a given day, the application is
expected to get around 2000-3000 hits.
What are all the factors to be kept in
mind while deployment? Any pointers
would be helpful.
That strikes me as low traffic site; however it depends what you're doing.
Despite my answer, I have to vote to close as your questions is vague and ambiguous. I'm not sure what you want to know.
I think you miss a basic information on your application.
As long as you create Flex/Flash application and you put them on your server they will always be SWF file executed Client Side.
So i think you don't have to wonder on the workload of your server because isn't your server that run the application but the Client PC.
As long as your server can manage 2000/3000 hit per day you can be quite sure that alway will run smootly.
Claudio.

Resources