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 |
Name | Description |
---|---|
ListDir | show files in folder |
Upload | allow uploads? |
NoWelcome | ignore index.html |
Reflect | reflect web socket messages back to all clients |
(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 ); }
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”
<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>
//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 ); }