Table of Contents

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