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
Next revision Both sides next revision
built_in:webserver [2015/03/22 13:41]
octazid completed
built_in:webserver [2016/07/15 17:30]
droidscriptkiddy [Table]
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===== 
 +The only option available for the webserver now is the '**Reflect**' option which tells the server to reflect all 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 55:
  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.txt · Last modified: 2016/07/16 01:37 (external edit)