One of the things I noticed while experimenting with the After Effects Socket object was that my Apache Server logs showed the User-Agent for my requests as “_” which I think is the Apache equivalent of null. While not really a problem while we are experimenting, it’s always a good idea to be a good citizen of the net as a developer. If we were to ingest a web service with the After Effects socket like so it would be the equivalent of knocking on a door with a mask on.
I didn’t see any reference to User-Agent in the After Effects Scripting Guide so I dug around a bit. User-Agent is simply a line in the GET or POST http request. Since we are crafting our http request line by line we can just add a reference to our project like so…
webConnect.write('GET /socketDemo/sampleProject.json HTTP/1.0 \nUser-Agent: OurFantasticAfterEffectsWebService(http://creative-workflow-hacks.com)\n\n');
What might be more common is an internal web service. In that case we might use system.machineName as the User-Agent like so…
var machine = system.machineName; var request = "GET /socketDemo/sampleProject.json HTTP/1.0 \nUser-Agent: " + machine + "\n\n"; webConnect.write(request);
We could then use our web server logs to trace which internal machine requested a particular service at a particular time.
Problem solved. I haven’t done a lot of work with raw HTTP requests and there is a ton of stuff in the HTTP spec so I know I’ll be doing some more reading as I dig deeper into using After Effects like this.
Andrew said
That’s for the great article. Can you please post a tutorial on using the socket object in reverse (as a server)? I’ve been experimenting with the examples in the Javascript Reference Guide without success. Don’t know if it’s my scripts that are the problem, or my server setup on osx.