Node.js:如何在服务器端打开一个图像窗口?

我正在开发一个node.js应用程序,我想知道这是否可能,如果是这样,如何:在我启动服务器后,node.js应该在服务器端打开一个新窗口,并显示一个图像生成从代码。

打开服务器端的任何窗口都不好,因为服务器将被各种用户访问。

但是如果你想这样做的话,你可以使用nodejs的child_process模块来执行那个扩展名的图片。

var exec = require('child_process').exec, child; child = exec('<image with location & extension>', function (error, stdout, stderr) { console.log('Image opened'); if (error !== null) { console.log('exec error: ' + error); } }); 

你好,快递世界的例子。

 var express = require('express'); var app = express(); app.get('/', function (req, res) { var exec = require('child_process').exec, child; child = exec('a.jpg', function (error, stdout, stderr) { console.log('Image opened'); if (error !== null) { console.log('exec error: ' + error); } }); res.send('Hello World!'); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); 

您可以使用open在浏览器中打开,并使用图像url。

 var open = require('open'); open('http://127.0.0.1/yourimage.png'); 

或者也许使用Node-Webkit而不是nodejs。

完整代码:

 var fs = require('fs'), http = require('http'), url = require('url'), open = require('open'); http.createServer(function(req, res) { var request = url.parse(req.url, true); var action = request.pathname; if (action == '/yourimage.png') { var img = fs.readFileSync('./yourimage.png'); res.writeHead(200, { 'Content-Type': 'image/png' }); res.end(img, 'binary'); } }).listen(8080, '127.0.0.1'); open('http://127.0.0.1/yourimage.png'); 

链接:

  • 如何使用nodejs打开默认浏览器并导航到特定的URL
  • 如何使用nodejs提供图像

Node-Webkit:

如果您使用node-webkit,您可以创build一个窗口(使用html / css)。

演示文稿nw.js

根据我的经验,从服务器端(甚至大多数情况下甚至是从您的代码)打开一个新窗口是不可能的。 我会做的是使用一些JavaScript代码,使页面上的内容dynamic(例如,查看angularjs ),并将图像显示在同一页面上,即使稍后在服务器端生成图像。 另一种select是从该图像的客户端代码打开一个新的选项卡。