ActionScript 3.0 :: XML Socket Only Works During Compile?
Oct 6, 2006
I wrote a Flash AS 3.0 Preview .fla & .as files that establishes a connection with a C++ server app via an XML Socket. Everything works great when I start the .swf file within Flash 9 Public Alpha by pressing [CTRL]+[ENTER]. But if I close the exported .swf file, and immediately open the file with the standalone Windows Flash 9 Player (I tried it with the player that comes with the Alpha preview and the brand new Player released on Oct 4 on Adobe Labs), no connection to the server is established.
I have a .fla file, that works with Socket class. There is a server(written in Delphi XE, but it does not matter). I connect to it from my .fla. When i execute my .fla from within Flash Professional CS5 everything works fine. But when i tried to execute resulting .swf from Explorer(Win 7, Flash Player 10) i got an error:
SecurityError: Error #2010: Local-with-filesystem SWF files are not permitted to use sockets. at flash.net::Socket/internalConnect() at flash.net::Socket/connect() at payterminal::TLogger() at
[Code].....
After all this, my .swf is still open in Flash Player with no errors, but the socket connection is not happening. I tried different crossdomain-files, but all my attempts led me to same result.
I have a socket server listening on 2 ports, 1 port for the socket server and 1 port for the policy server. My code is below, in this scenario, data is sent and received perfectly fine. however, for example if I add a button with a simple:
socket.writeUTFBytes("Message"); socket.flush();
after the initial connection, it doesn't seem to send any data to my server (I have my server printing all data transmissions to the console for checking) Initial connections work fine, as seen below:
I made sure the playback security was set to network only on the publish settings menu. I have another program that connects to the same server without a problem, so I don't think it's a cross-domain policy file problem.
i have this flex app (it's a flex project created from flash builder), and it compiles fine when i build it from the IDE.it fails to compile when i do it from command line through mxmlc.i am invoking the mxmlc at the location "flash-builder-installation"sdks"flex-ver"inthe mxml file is test.mxml.i don't have any dependency on any of custom swc file.i am getting the following type errors when i compile it.[code]
When I send number (int)52 s.Send(BitConverter.GetBytes((int)872415232));, flash show me trace(socket.readInt()); 872415232 If i send 872415232, flash show 52.Why? And how it fix?
I'm using Flash Develop to build an as3 application using the Flex compiler. In the constructor of a particular class I have written the following code
Code: //constructor public function Test(par1:int, arr:/*int*/Array = [1, 2]){ <----- compiler shows error here
There is probably no way for this but does anyone know a method of excluding certain functions from a build by use of a meta tag and or compiler option?I want to expose some functions for testing but not have them bloat the application on production. I could create separate testing classes and test for a complier directive or option and only load them if necessary but I like the idea of having the test function on the actual object (in the class).
I'm creating a client-server game. My client is a flex based game, and my server is erlang server. At the beginning, when I test directly my flex client in flash player, I can establish a connection easily to my erlang server through socket connection. And both can exchange data with no problem. The problem rise when I deploy my flex app at Apache http server, and running it using a browser by calling [URL] my flex socket sends message requesting for a crossdomain policy to my erlang server. So I create an xml message that represent a crossdomain policy, and send it back to my flex app as a response for that request.
Yet still I can't establish any permanent socket connection between my flex client and my erlang server. I know this because I add listener on my flex socket that will modify its internal state to CONNECTED, if a connection between client-server has established.
I have a movie clip (with instance name rectangle_mc) on the stage. Within this movie clip there are two separation animations on the timeline. The ROLL_OVER animation starts on frame "over" and the MOUSE_OUT animation starts on frame "off." If I roll over the movie clip, the initial animation plays, and when I mouse out the other animation plays to restore it to it's initial state. However, once the rollover animation has played once, it will not play again when I roll over it again, but for some reason the MOUSE_OUT plays every time.
Steve Jobs just posted this article on why Apple rejects Flash... [URL] I agree that javascript and css can be used to replicate some of Flash's animation, though Flash does all sorts of scaling and tweening that is incredibly powerful, and I'm not sure that there's anything comparable in javascript, if there is, I certainly haven't seen it.
However, my question is about the socket. Flash has an incredibly powerful openSocket class that allows you to connect to a server and have the server and the client talk back and forth to one another. As far as I know there is no equivalent class in Javascript. Am I mistaken? Is there some secret mystery Ajax class that replicates the openSocket? If not, then that feature alone makes Flash an invaluable tool.
I don't need to deploy an HTTP server and all the connections are made on port 80, the default HTTP port, which is generally not blocked by firewall.Unfortunatly at the end of my work I realized that the flash socket component has some limitation on using port 80.[URL]As nobody is interested by this report, I now think that this limitation is done on purpose by Adobe. I don't know exactly why, may be to force to use their data service product.
I can understand that. But what I am hangry about is that nowhere in the documentation of the socket component there is an information about this limitation. I guess lot of people lost time trying to reach an unreachable goal ! And most of the time you find the problem at the end of the work because local connection is working ok on port 80.
I have this Socket (not XMLSocket, just Socket) client. I also have a custom PHP script on my server, that listens on port X. My client tries to connect to it.Everything works fine, the security and communication, sync and whatever else. But - the Flash Player (AIR runtime actually) shoots an error when trying to connect, but ONLY when the server is not running... the error is actually handled by try catch (IOError), and even weirder, the line that is specified in the output as the error line is the line where I just CREATE the Socket...?
Output:
Error #2044: Unhandled IOErrorEvent:. text=Error #2031: Socket Error. at ---.server::Client()[/DevProjects/Libs/ASLibs/---/server/Client.as:167] at Function/<anonymous>()[---_fla.MainTimeline::frame1:430][code].....
when I comment out the line where I actually connect using Sock.connect(...) - it does not throw the error, but it obviously does not work... Also, the connect part is also in try catch (IOError) block...
I am trying to communicate using this protocol. It works fine except when the socket has a lot of data to return. Right now I am checking if a packet ends with to determine if I have received all the packages. Problem is that sometimes a package can end with as a line break even if it is not the last package, so I can not use that.
I am using a command queue, because I want to wait for a complete response before sending the next command.
The code with unnecessary stuff removed:
class CustomSocket extends Socket { private var _response:String; private var _commandQueue:Array;
[Code]....
The problem is in the function readResponse. I've googled a lot without finding anything of interest.
Is there a way to know the total amount of bytes/packets a socket will return? Or a way to detect EOF or that a package is the last?
I am currently working on a project that involves using sockets. I am using Flash CS5 and AIR2.0. I am also using another program that will be acting as the socket server (Esperient Creator).I have successfully SENT socket commands from my AIR app to the server.What I need to do is RECEIVE socket commands within my AIR app from the server program. I read somewhere that this was a new feature for AIR 2.0. If anyone has any insight on how to get this to work.
I have a custom socket class designed to connect to a server and talk with it. At one point, the server uses hex data for speed, however Flash seems to not get ANY of this data. In fact, it doesn't get ANY of the data from that point to the next packet.
I have moved on now to where this is clearly a Flash security thing.I have a flash client that attempts to connect to an open socket on the same host as the one on which it lives.I am able to connect successfully from inside the Flash IDE, and when I run the swf movie locally on my machine, after granting it security clearance in the white list it connects as well. However, when I call the movie via the browser (URL...) it fails to connect.The socket reports that a connection attempt is made but immediately disconnects.I have a crossdomain policy file that looks like this: in the root directory of the host.[code]In the flash movie I have a line that looks like this: System. security. loadPolicyFile (URL...);And I'm thinking maybe that's where the problem is, but the documentation on how to use this method is not entirely clear. I'm in Flash CS3
I'm trying to work out some kinks in a multitouch application I've built. It uses flosc to communicate with a xml socket server that sends the multitouch events. This all works fine and dandy for most of the time.
But if I'm mean and flood it with multitouch events Flash can't keep up with parsing the input, and the socket just keeps getting data that piles up until it either catches up or the whole thing crashes.
I have no problem discarding input once there's too much*, but I'm having trouble devising a clever way to do it.
* The app does 6-10 simultaneous inputs with no problem, things start to get hairy once I have to deal with 20+ which basically means someone is lying on the table ;)
I am trying to connect to a socket server from flex. I read, on adobe's documentation, the client automatically sends a "request-policy-file" xml element to the socket before allowing it to be opened, and should receive a policy file.
The client sends the xml element as expected, My server receives it (on the port I want to use, port 6104) and replies on the same port with:
I have a Flex web app (compiled to regular SWF) that tries to connect to a (binary, not XML) socket on its own server. So if the swf is at [URL], the socket is [URL] This should be possible, AFAIK, but when I try to connect I get a security error saying that [URL] cannot access [URL]. Even though it shouldn't be needed, I also have a crossdomain.xml file containing
In my Flash app, I'm connecting to my server like this:
Security.loadPolicyFile("xmlsocket://example.com:12860"); socket = new Socket("example.com", 12869); socket.writeByte(...); socket.flush();
At port 12860 I'm running a socket policy server, which (according to this document) correctly serves up my policy like this:
[Code]...
I get no security warnings, which I used to get before the policy server was in place. Still, the connection to port 12869 doesn't work. It's made (I can see with Wireshark and on the server), but no data is sent by Flash. It might be worth knowing that the SWF itself is served from example.com as well.
I have made a socket server in C# for a flash game that I am developing, I got the code from somewhere and I am a beginner in c# and .net development . It works fine in practice when connections are made and the server functions correctly. Get 2 concurrent connections at the same time and we have a problem. here is the basic aspects of the socket server below: (alot taken out for obvious reasons) how can I alter this so that it can handle concurrent connections? Should I be threading each response?