使用 Firefox OS 作为网络服务器

Use Firefox OS as web server

对于一个艺术项目,我想要有多个可以输出声音的分布式设备。 Firefox OS 设备似乎是最佳选择。他们带来了必要的硬件,我非常了解 HTML 和 JS。但我还需要一个控制网络服务器。

据我了解,Firefox OS 设备可以充当 WiFi 接入点 ("Share Internet")。但是,它不能充当加入网络的其他设备的小型网络服务器——没有任何互联网连接。本机应用程序的 API 似乎还不够强大。

但也许我错了(我愿意)。那么,Firefox OS 设备是否能够 运行 作为小型 Web 服务器?

你应该试试 httpd.js。此库适用于 FirefoxOS 2.0。

// create a server object
server = new HttpServer();

// configure /sdcard/public as document root
server.get("/", "/sdcard/public");

// launch on port 3000
server.start(3000);

我认为你不需要服务器来完成这个任务,你可以用WebRTC做主从通信并处理声音客户端的执行。

httpd.js 对我来说不是开箱即用的。但它让我走上了正确的轨道。然后我找到了 this,在对代码进行了一些调整和更新之后,我得到了一个超级简单的服务器解决方案。

function startListen(){
  console.log("Initializing server");
  var socketServer = navigator.mozTCPSocket.listen(8080);

  socketServer.onconnect = function(conn){
    console.log("connected", conn, conn.ondata);
    conn.ondata = function(ev){
      console.log("Got request: ", ev);   
      conn.send("Ok. Got client on port " + conn.port);
      conn.close();
    };
    conn.onclose = function(ev){
      console.log("Client left:", ev);
    }
  };
  socketServer.onerror = function(ev){
    console.log("Failed to start: ", ev);
  };
}
startListen();

需要 tcp-socket 许可。

使用此代码,我能够在 Firefox OS 模拟器中启动它,指示我的浏览器打开 http://localhost:8080 并获得答案并在控制台中登录。

PS。这也适用于真实设备。不幸的是,需要一个单独的接入点。虽然 Firefox OS 本身可以作为热点工作,但在该模式下它既不能作为客户端也不能作为服务器(传出连接未正确路由并且传入连接被拒绝)。

我最近在 Mozilla Hacks 博客上写了一篇文章来演示如何实现它:

Embedding an HTTP Web Server in Firefox OS