Results 1 to 8 of 8

Thread: Build upload file on-the-fly with javascript?

  1. #1
    Join Date
    Oct 2008

    Lightbulb Build upload file on-the-fly with javascript?

    hey guys.

    I've been working on an ajax based multiplayer game for a couple of weeks now, but have run into a problem.

    Heres the situation:

    I need to send the location of the y coordinate of each players cursor to the server every 50 to 100ms or so (or just every time the cursor moves...say 15px in either direction). I have tried using simple POSTs, but they are just too slow due because each POST requires a new connection to the server. What I need is to be able to STREAM the data to the server instead of making an entirely new POST connection every time.

    I have been unable to think of a way to do this except through potentially using javascript to create a "file" to upload to the server on-the-fly. The file would be being constantly filled with mouse coordinate (and filler) data as it was being uploaded to the server. The server would need to access the tmp file, read the last line, and chop it off when its done to avoid creating any files that are too large.

    This method sounds feasible to me (if someone things i'm crazy, please let me know so I don't waste any more time with this ), except that I do not know of any way to simulate an actual file upload with javascript. I think I can handle the server side stuff.

    If anyone knows of any way to do this, or has any alternate ideas that may do what I need, I would be very very grateful!


  2. #2
    Join Date
    Aug 2008
    I duno it seems to me that creating a new file and uploading to the server then once at the server your opening up the file reading the last line and then running a process to use that information. Is going to be alot more time consuming then simply posting.
    If you are posting ne ways.. maybe look into CURL http://us.php.net/curl

  3. #3
    Join Date
    Oct 2008
    I think maybe you misunderstand my issue. I have to stream the information, in real time, to the server from the user's browser using Javascript. Curl will not work for this since PHP is located server side and can not access browser events.

  4. #4
    Join Date
    Aug 2008
    I understand that, but if you are posting the information currently.
    Then there is not a difference. Posting requires a page refresh. Thus giving you the opportunity to use a server side language to work with the posted data.

    But if you say so then Idk gl.

  5. #5
    Join Date
    Oct 2008
    I am currently using Ajax to post the information (no page refresh/reload required), but as I said, this is too slow. A constant upload data stream is needed to solve my problem.

  6. #6
    Join Date
    Jul 2008
    urbana, il
    if you need to send less than 1.8kb of data, use an img ping.
    compared to an ajax request, image source changes have practically no overhead.
    you can re-use the same image over and over.
    images also have the advantage of not including cookies in the request, so pretty much every ping is a single packet operation.

    function ping(url){
    	var i = ping.i || (ping.i = new Image);
    	i.src = url;
    	ping.timer = setTimeout(function(){i.src="";}, 3300);
    //example of sending data with ping
    	var base = "http://myserver.com/pcoord.php?";
    	var demo = ({ name: "savage", x: 21, y: 174, hp: 122 });
    function phoneHome(){ 
    	var esc = encodeURIComponent;
    	var qs = ([ "?player=", esc(demo.name), "&x=", demo.x,"&y=", demo.y, "&hp=", demo.hp]).join("");
    	ping( base + qs);
    Last edited by rnd me; 10-01-2008 at 01:48 PM.

  7. #7
    Join Date
    Oct 2008
    ahh! now that sounds promising. I will try to get that working soon so I can let you know if it solved my problem. Thanks for the suggestion -rnd me-! If anyone else has any other ideas, I would be very thankful for them.

  8. #8
    Join Date
    Oct 2008
    Well. It seems that your method worked in some ways, but didn't in others.

    The main problem, i think, is that these "img pings" are not asyncronous (they lock up the browse if a send takes longer than expected). I found that the motion in the game was possibly slightly smoother, although not by much.

    I thank you so much for your suggestion, as I did not know that method was possible. I will definatly be able to use it in the future.

    Does anyone else have any other suggestions?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center



X vBulletin 4.2.2 Debug Information

  • Page Generation 0.12685 seconds
  • Memory Usage 2,916KB
  • Queries Executed 15 (?)
More Information
Template Usage (33):
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (1)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (8)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (8)postbit
  • (8)postbit_onlinestatus
  • (8)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (70):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates