User Tools

Site Tools


built_in:webserver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
built_in:webserver [2015/03/21 17:30]
octazid [Methods] sorted
built_in:webserver [2016/07/16 01:37] (current)
Line 2: Line 2:
  
 ===== Methods ===== ===== Methods =====
-^Method ^Description ^ +^ Method                                 ^ Description                        
-|WebServer.AddServlet( p1,p2 ) | | +| WebServer.AddServlet( path,callback                                     | 
-|WebServer.SendText( txt ) | | +| Webserver.GetWebSockClients()          |                                    
-|WebServer.SetFolder( folder ) | | +| WebServer.SendText( txt, ip                                             
-|WebServer.SetResponse( p1 ) | | +| WebServer.SetFolder( folder )                                             | 
-|WebServer.Start() | |+| WebServer.SetOnReceive( callback)      |                                    
 +| WebServer.SetResponse( text                                             
 +| WebServer.Start()                                                         | 
 +| WebServer.AddRedirect(url, target)     | Wildcards (*) can be used for url  | 
 + 
 +=====Options===== 
 + 
 +^ Name ^ Description ^ 
 +| ListDir    | show files in folder          | 
 +| Upload     | allow uploads?      | 
 +| NoWelcome  | ignore index.html 
 +| Reflect    | reflect web socket messages back to all clients | 
 + 
 + 
 +=====Example===== 
 +//(Example taken from the DroidScript sample section)// 
 + 
 +<code javascript> 
 +//Called when application is started.  
 +function OnStart()  
 +{  
 + //Check wifi is enabled.  
 + var ip = app.GetIPAddress();  
 + if( ip == "0.0.0.0" ) {   
 + app.ShowPopup( "Please Enable Wi-Fi" );   
 + app.Exit();  
 + }  
 + //Create a layout with objects vertically centered.  
 + lay = app.CreateLayout( "linear", "VCenter,FillXY" );  
 + 
 + //Create a text label and add it to layout.  
 + var s = "Type the following address into your" +   
 + " browser\n\n" + ip +":8080";  
 + txt = app.CreateText( s, 0.8, 0.5, "MultiLine" );  
 + txt.SetTextSize( 22 );  
 + lay.AddChild( txt );  
 +  
 + //Add layout to app.  
 + app.AddLayout( lay );  
 +  
 + //Create and run web server.  
 + serv = app.CreateWebServer( 8080, "Upload,ListDir" );  
 + serv.SetFolder( "/sdcard/DroidScript" );  
 + serv.AddServlet( "/message", OnServlet );  
 + serv.Start();  
 +}  
 + 
 +//Handle servlet requests.  
 +function OnServlet( request, info )  
 +{  
 + serv.SetResponse( "Got it!" );  
 + app.ShowPopup(  info.remoteAddress + " says: " + request.msg );  
 +}  
 +</code> 
 + 
 + 
 +---- 
 + 
 + 
 +=====WebSocket Sample===== 
 +running on DroidScript V 1.23b and higher 
 + 
 +//(Sample posted by Dave Smart in the DroidScript Beta Forum)// 
 + 
 + 
 +Create the following two files in one folder and call your folder "Web Sockets" 
 + 
 +<code html index.html> 
 +<html> 
 +<head> 
 +<title>WebSocket Demo</title> 
 + 
 +<script> 
 + 
 +var count = 0; 
 + 
 +//Connect to server via web sockets. 
 +function Connect() 
 +
 + //Check web sockets are supported. 
 + if (!window.WebSocket)  
 +
 + alert("WebSocket not supported by this browser"); 
 + return; 
 +
 +  
 + //Open web socket to phone. 
 + ws = new WebSocket( "ws://"+window.location.host ); 
 + ws.onopen = ws_onopen; 
 + ws.onmessage = ws_onmessage; 
 + ws.onclose = ws_onclose; 
 + ws.onerror = ws_onerror; 
 +
 + 
 +//Send a message to the server. 
 +function Send() 
 +
 + ws.send( "Hello " + count++ ); 
 +
 + 
 +//Handle socket open. 
 +function ws_onopen()  
 +
 + id_info.innerHTML = "Socket Open"; 
 +
 + 
 +//Handle messages from phone. 
 +function ws_onmessage( msg )  
 +
 + id_info.innerHTML = msg.data; 
 +
 + 
 +//Other websocket callbacks. 
 +function ws_onclose() { id_info.innerHTML = "Socket Closed";
 +function ws_onerror(e) { id_info.innerHTML = "Socket Error: " + e.data; } 
 +</script> 
 +</head> 
 + 
 +<body> 
 + <h2>DroidScript WebSocket Demo</h2> 
 +  
 + <div id="id_info">Ready</div> 
 + <br><br> 
 + <button onclick="Connect()">Connect</button> 
 + <button onclick="Send()">Send Message</button> 
 +   
 +</body> 
 +</html> 
 +</code> 
 + 
 + 
 +<code javascript Web Sockets.js> 
 +//Init variables. 
 +var count = 0; 
 + 
 +//Called when application is started. 
 +function OnStart() 
 +
 + //Check wifi is enabled. 
 + ip = app.GetIPAddress(); 
 + if( ip == "0.0.0.0" ) {  
 + app.ShowPopup( "Please Enable Wi-Fi" );  
 + app.Exit(); 
 +
 +  
 + //Prevent wifi from powering down. 
 +    app.PreventWifiSleep(); 
 +  
 + //Create a layout with objects vertically centered. 
 + lay = app.CreateLayout( "linear", "VCenter,FillXY" ); 
 + 
 + //Create a text label and add it to layout. 
 + var s = "Type the following address into your" +  
 + " browser(s)\n\n" + ip +":8080"; 
 + txt = app.CreateText( s, 0.8, 0.3, "AutoScale,MultiLine" ); 
 + txt.SetTextSize( 22 ); 
 + lay.AddChild( txt ); 
 +  
 + //Create a text label and add it to layout. 
 + txtMsg = app.CreateText( "", 0.8, 0.3, "AutoScale,MultiLine" ); 
 + txtMsg.SetTextSize( 22 ); 
 + lay.AddChild( txtMsg ); 
 +  
 + //Create a 'Send Message' button. 
 + btn = app.CreateButton( "Send Message", 0.4, 0.1 ); 
 + btn.SetMargins( 0, 0.05, 0, 0 ); 
 + btn.SetOnTouch( SendMessage ); 
 + lay.AddChild( btn ); 
 +  
 + //Add layout to app.  
 + app.AddLayout( lay ); 
 +  
 + //Create and run web server on port 8080. 
 +    serv = app.CreateWebServer( 8080 ); 
 +    serv.SetFolder( "/sdcard/DroidScript/Web Sockets" ); 
 +    serv.SetOnReceive( serv_OnReceive ); 
 +    serv.Start(); 
 +  
 + //Start timer to show WebSock connections. 
 + setInterval( ShowConnections, 3000 ); 
 +
 +  
 +//Show who is connected. 
 +function ShowConnections() 
 +
 + var clients = serv.GetWebSockClients(); 
 +  
 + if( clients.length > 0 ) 
 +
 +    //Make a list of clients. 
 +    var list = ""; 
 +    for( var i=0; i<clients.length; i++ ) 
 +        list += clients[i].remoteAddress + "\n"; 
 +         
 +    //Show client list. 
 +    txt.SetText( list ); 
 +
 +
 + 
 +//Send a message to all connected socket clients. 
 +function SendMessage() 
 +{  
 +    //Note: You can send to a specific client by passing 
 +    //the IP address as the second parameter. 
 + serv.SendText( "Hello " + count++ ) 
 +
 + 
 +//Called when messages arrive from websocket clients. 
 +function serv_OnReceive( msg, ip ) 
 +
 +    txtMsg.SetText( ip + ": " + msg ); 
 +
 +</code>
built_in/webserver.1426959028.txt.gz · Last modified: 2015/03/22 01:30 (external edit)