Actionscript :: Flex Long Polling (server Push) Without BlazeDS?
Oct 19, 2009
Apart from using BlazeDS, are there any pre-existing libraries that implement long polling (or server push) in Flex?I've read I like to implement Flex to Server comet / long polling for games, but he's only asking if it's possible to implement... Not if implementations exist.
I have a flex UI which communicates with server using spring blazeds. I have a very typical requirement of Live data streaming on a panel in UI. Requirement is like this, We have an object say, Person and server keeps pushing its data on blazeds message destination where UI panel consumer has subscribed and hence user can see this live data in a panel. User can open multiple panels in same browser to view data for different Persons at the same time (e.g id=1,2,3 respectively). There can be multiple UI users who may be viewing the same data for person id=1 at a given time, lets say.
Basically I want to separate data between UI panels. UI panel opened for person id=1 must not display data of that for person id=2. I am doing this using headers-selectors, but apparently I found out that the differentiation to select and display what data happens on UI which is causing performance issues. I learned that using subtopics may improve performance. But, before proceeding for it, I want to know, will UI browser end up in receiving data irrespective of subtopic assigned to data and then consumer will decide to accept it or not?
I'm trying to open a connection to a URL that will periodically send over a JSON object. I know that I need to use URLStream and some event callbacks, but I'm in the dark when it comes to knowing how streams of data "work," or the general flow of operations. Assume I know how to open the connection and send the correct request headers. First, some relevant code:
I am using BlazeDS for data-push feature in my Flex application project. From the official tutorial, Getting started with BlazeDS, it shows messaging example with producer/consumer from API. but how can I implement server side which doesn't need to be invoke from Flex client, but from within server-side instead. I got some idea but I don't know how to do because I'm a Flex developer, not Java developer In Google, there's a tutorial show about I need to extend ServiceAdapter class in Java-side, which extends Invoke method. Do I need to extend other class instead of this to do what I want?
Any standard way to keep alive the http session as long user has open the flex app in the browser? I played around with the polling mechanism of blazeds. But it had no affect on the http session.
I am using Flex 3 and make a call through a RemoteObject to a Java 1.6 method and exposed with BlazeDS and Spring 2.5.5 Integration over a SecureAMFChannel. The ActionScript is as follows (this code is an example of the real thing which is on a separate dev network);
I'm building a remote presentation tool in AS3. In a nutshell, one user (the presenter) has access to a "table of contents" HTML page with links for each slide in the presentation, and an arbitrary number of viewers can watch the presentation on another page, which in turn is in the form of a SWF that polls the server every second to ensure that it's on the right slide. Whenever the admin clicks a slide link in the TOC, the database gets updated, and on its next request the presentation swf compares the label of the slide it's currently displaying to the response it got from the server. If the response differs from the current label, the swf scrubs through the timeline until it finds the right frame label; otherwise, it does nothing and waits for the next poll result (a second later).
Each slide consists of a movieclip with its own nested timeline that loops as long as the slide is displayed. There's no actionscript controlling any of the nested movieclips, nor is there any actionscript on the main timeline except the stop();s on each keyframe (each of which is a slide in the presentation).
Everything is built and working perfectly. The only thing that's troubling is that if the presentation swf is open for long enough (say, 20 minutes), the polling starts to have a noticeable effect on the framerate of the movieclips animating on any given slide. That is, every second, there's a noticeable drop in the framerate of the animations that lasts about three-tenths of a second, which is quite noticeable (and hence is a deal-breaker for the whole presentation suite!).
I know that AS3 has issues with memory management, and I've tried to be diligent in my re-use of objects and event listeners. The code itself is dead simple; there's a Timer instance that fires every second, which triggers a new URLRequest to be loaded by a URLLoader. The URLLoader is reused from call to call, while the URLRequest is not (it needs to be initialized with a new cache-killing value each time, retrieved from a call to new Date().time). The only objects instantiated in the entire class are the Timer, the URLLoader, the various URLRequests (which should be garbage-collected), and the only event listeners are on the Timer (added once), the URLLoader (added once), and on the routines that scrub backwards and forwards in the timeline to find the right slide (and they're removed once the correct slide is found).
I've been using mr doob's stats package to monitor memory usage, which definitely grows over time, so there's gotta be a leak somewhere (it grows from ~30 MB initially to > 200 MB after some scrubbing and about 25 minutes of uptime).
As far as In understand the Flex technology, a Flex client connects to a Flex server to retrieve business information. Is this the only allowed connection for the client, back to the originating server? Or can a Flex client also open a secondary connection to a different server wich runs BlazeDS for message exchange?(This might offer an option for load balancing and cross-platform development).
Update: I have found this page which links to the Cross-domain policy file specification:[URL]..
I have Flex/AIR app that connects to a tomcat server via BlazeDS. I'm not finding that I have to integrate an old webapp (struts/jsp) and I'd like to keep that webapp untouched except for login, authentication and session handling. Also a 3rd java app that uses httpclient.
Currently I have some blazeDS remote objects to handle login/logout with a few RPC calls. In turn, FlexSession objects are created and handled. Is there a way to use httpclient and javascript to call those blazeds RPCs so I dont have to recode and have 3 different means to handle logins and sessions?
As a first step getting a Hello World Flex-to-Java application to compile and run I followed: [URL] And it ran successfully. However now I wish to automate the build in Maven. How to specify the Flex Server location in the pom.xml?
I create a Flex application that works with a browser using a database with the MySQL server that I can create, modify and delete data from a database. The problem I encounter now is that I want to see my program with Adobe AIR (virtual machine). At the display that does not pose a problem. The problem is that air can not reach the database server is located in the MySQ. the error message displayed is as follows: "Error : client.Error.MessageSend - Channel.connect.failed error tConnection.Call.Failled : HTTP: Status 404:url:'[URL]"
I have a server with some simple java objects running. I want to build the client with Flex and connect to the server data with BlazeDS. The problem is the Flash Builder is not generating the Classes correctly. Just the properties are being generated, the inheritance are not being generates.
I have a question about the Java Factory; I've read somewhere that: "... the JavaFactory will check if there is already an instance in the scope and return that. If the object is not available then it is instantiated ...", but I don't understand the expression "if the object is not available"?I am having trouble to find and/or assign classes already instantiated (by another class) in the server, to a declared destination.
I'm developing an application in Java: J2EE.I'm running it on a Tomcat 6 server I'm using BlazeDS to communicate with Flex. I'm using the RPC's Remoting Service (through RemoteObjects)There are two java classes that handle Client (Flex) interaction, say ApplicationClass and UserApplicationClass:
ApplicationClass has a reference (attribute) to a UserApplicationClass instance
I have a java class which has been deployed as WAR web application in a BlazeDS/Spring server sitting on JBOSS. Apart from the Flex application which will access the WAR file, I also need to start some server side process's which will initiate BlazeDS "pushes" to the Flex client via AMF messaging.
What is the best way to implement this server side process? - Should it just be a class with a main() method in the WAR file which gets called from the command line? Can this be done - not sure you can run a class in a WAR file from command line? - Should it just be a class with a main() method in a JAR file which gets called from the command line? Not sure what the standard practise here is. The key is that the process needs to be started on the BlazeDS server to push data out (not on the Flex client).
I'm trying to play a 10 minute long video (h264/mp4) which is 39MB in size, after I call stream.play(fileURL) it doesn't start playback until its loaded around 12-16MB of the file (many many seconds later), I finally get onMetaData at this point too. Why doesn't it begin playback right away, or at least w/in a couple seconds? What can cause this bloated lead in time?
I'd like to push a prerecorded flv as live stream to another server, from wich clients can receive the video as live stream.
[Code]....
monitorStream.flv lies on my FMS. So from the debug-output everything looks fine. But i donīt see any video, when i play the published stream on client-side. The outgoing stream itself is correctly published.
We are planning to make a POC for Desktop Alert application. We will have a desktop AIR app that will connect to a Java Server. The server will need to notify Desktop App when it has a notification which will be displayed on the screen.A couple of options that we have discovered are :
1. Keep a persistent connection between the AIR app and the Server, using some sockets and listen to any changes.
2. Poll the Server at intervals to check if some new data has come.
Since these options don't seem optimal (persistent connection) or seems performance wise (polling) better.
I am trying to load test my 2 server load balanced FMS 2 environment which has been set up with the profile for 1000 connection 40MB. When I hit about 140 connections/server it fails with a "Bandwidth Penalty activated at time 1248945759.731000 with bandwidth 5945889 and limit 5000000" error logged in the event viewer immediately followed by many rejection errors: " immediately followed by many rejection errors: " Connection rejected by server. Reason : [ License.Limit.Exceeded ] : (_defaultRoot_, _defaultVHost_/DLvideo/_definst_) : Current server bandwidth usage exceeds license limit set. Rejecting connection."The load testing mechanism is a test harness that was created by a third party and seems to work well up until the above messages are logged. It basically is making 25 sustained streamed video connections per minute until it starts disgarding connections as noted above.
The servers are not even breathing hard (RAM is less that 50% consumed and CPU Utilization is < 5%) 1GB NIC on each server.What parameter(s) can be changed to push the servers harder.
I've run into a bit of a wall with sending messages from BlazeDS on the server to Flex clients. I have my adapters and destinations set properly (I think) messaging-config.xml and my streaming channel setup in my services-config.xml files. The messages work beautifully in Safari (Mac and PC) but no other browsers.
[Code]...
I feel like things are setup correctly in the channel definition but, perhaps, some of those user-agent settings are off (I have played with their settings, to no avail thus far).
I've run into a bit of a wall with sending messages from BlazeDS on the server to Flex clients. I have my adapters and destinations set properly (I think) messaging-config.xml and my streaming channel setup in my services-config.xml files. The messages work beautifully in Safari (Mac and PC) but no other browsers. relevant Bits from messaging-config.xmlAdapter:Destination:
I am using sendAndLoad heavily in my fms3.5.2 application because it accesses an API on the webserver to execute commands. It calls a PHP file on the webserver which connects to a database, does some processing and returns XML output. Now, LoadVars has been giving me problems for months now. I suspect it is the reason my application crashes intermittently.
Also, lately.. it takes about 2 minutes just for the sendAndLoad to reach the onData stage. I have no idea why. This is not a problem of the PHP taking long to display the XML because if I access the PHP directly using `links` linux command, then it returns practically immediately.
For some reason connecting to Flash Media Server 3.5 takes around 40 seconds. The server is running on Windows Server 2008 (64-bit edition) on a virtual server located in a reliable hosting center and I'm connecting to it over the internet. The server is using built-in Windows Firewall with all the inbound TCP ports required by Flash Media Server opened (80, 1935 and 1111).
If I disable the server's firewall the connection time drops to 20 seconds, but it's still pretty damn long time just for establishing connection. We probably have some company firewall at this end (the client side), but other streaming media services works just fine over this connection.
HTTP broadcast delay is too long, I do a test in the LAN, send video using FME 3.2 the flow FMS4.5 server, use the sample folder under the videoplayer to play live video streams, using HTTP delay of 10 seconds or more,(RMTP play live rarely delay), who can tell me, how can I do this problem can solve the delay!
I'am making a advanced mp3 player arund this tutorial: [URL] and i want the users of the player to see how long they have listen or how long time back of the song. i have the AS i what to use but i cant connect them. becuase the tutorial i used does not make a sound objekt (MUSIC)
why dynamic streaming taking too much time to switch video from lower bit rate to higher bit rate and vice versa. I am doing dynamic streaming in following ways -
var param:NetStreamPlayOptions = new NetStreamPlayOptions(); param.oldStreamName=oldStream(); param.streamName=newStream()
[code]....
I am using duel buffering and that is 3 seconds when video starts and 10 seconds when "NetStream.Buffer.Full". Video taking approximately 30-50 seconds to switch video and when I am calling the above code.