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/22 13:41]
octazid completed
built_in:webserver [2016/07/16 01:37] (current)
Line 2: Line 2:
  
 ===== Methods ===== ===== Methods =====
-^Method ^Description ^ +^ Method                                 ^ Description                        
-|WebServer.AddServlet( p1,callback ) | | +| WebServer.AddServlet( path,callback )                                     | 
-|WebServer.SendText( txt ) | | +| Webserver.GetWebSockClients()          |                                    
-|WebServer.SetFolder( folder ) | | +| WebServer.SendText( txt, ip                                             
-|WebServer.SetResponse( text ) | | +| 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=====
-//(Example taken from the DriodScript sample section)//+//(Example taken from the DroidScript sample section)//
  
 <code javascript> <code javascript>
Line 48: Line 60:
  app.ShowPopup(  info.remoteAddress + " says: " + request.msg );   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> </code>
built_in/webserver.1427031692.txt.gz · Last modified: 2015/03/22 21:41 (external edit)