using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; using System.Net; using System.Text; using System.IO; public class BrowserServer : MonoBehaviour { [SerializeField] [Tooltip("Local Path in Streaming Assets")] private string LocalPath; [SerializeField] [Tooltip("Browsers by default use 80")] private int port = 80; SimpleHTTPServer server; // Start is called before the first frame update void Start() { server = new SimpleHTTPServer(Path.Combine(Application.streamingAssetsPath,LocalPath),port); } private void OnDisable() { server.Stop(); } private void StartServer() { if (!HttpListener.IsSupported) { Debug.LogWarning("Windows XP SP2 or Server 2003 is required to use the HttpListener class."); return; } string responseString = "

Error Connecting to server

"; // Create a listener. HttpListener server = new HttpListener(); // Add the prefixes. server.Prefixes.Add("http://*:" + port.ToString() + "/"); server.Start(); Debug.Log(" HTML Listening..."); // while (enabled) // { HttpListenerContext context = server.GetContext(); HttpListenerResponse response = context.Response; string page = Path.Combine(Application.streamingAssetsPath, LocalPath, context.Request.Url.LocalPath); Debug.Log("Client asked for: " + context.Request.Url.LocalPath); if (page.EndsWith("/")) page += "index.html"; Debug.Log("Client asked for: " + page); if (page == string.Empty) page = "index.html"; try { TextReader tr = new StreamReader(page); string msg = tr.ReadToEnd(); byte[] buffer = Encoding.UTF8.GetBytes(msg); response.ContentLength64 = buffer.Length; Stream st = response.OutputStream; st.Write(buffer, 0, buffer.Length); } catch (IOException e) { Debug.LogError(e); } context.Response.Close(); //} server.Stop(); Task.Run(() => StartServer()); } private void Respond(HttpListenerContext context) { string responseString = "

Error Connecting to server

"; try { responseString = System.IO.File.ReadAllText(Path.Combine(Application.streamingAssetsPath, LocalPath, context.Request.Url.LocalPath)); Debug.Log(responseString); } catch (System.IO.IOException e) { Debug.LogError(e); } HttpListenerRequest request = context.Request; // Obtain a response object. HttpListenerResponse response = context.Response; // Construct a response. byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); // Get a response stream and write the response to it. response.ContentLength64 = buffer.Length; System.IO.Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); // You must close the output stream. output.Close(); } }