User Tools

Site Tools


Sidebar

Privacy Policy

News

Version 2.50 is out since Jan 1st 2022


Frequently Asked Questions


Namespaces

Note for contributors

If you wish to create a new page in the DroidScript wiki, please click on the most appropriate namespace above and follow the notes for contributors there.

Because of spam, it has been necessary to add a CAPTCHA to the registration form and the save option for editing pages. You will not need to prove you are human if you are logged in, so please register.

Please feel free to improve any existing page, as well as adding new pages to increase the sum of public knowledge about DroidScript.

Formatting Syntax

built_in:webserver

WebServer control

Methods

Method Description
WebServer.AddServlet( path,callback )
Webserver.GetWebSockClients()
WebServer.SendText( txt, ip )
WebServer.SetFolder( folder )
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)

//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 ); 
} 

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”

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>
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 );
}
built_in/webserver.txt · Last modified: 2016/07/16 01:37 (external edit)