2015-10-18 68 views
2

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

+0

与软件的完美结合,几乎任何事情都有可能 –

+0

@eko见开放模块。 –

回答

0

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

但是,如果你想这样做,你可以使用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); 
}); 
+0

完美,谢谢!拥有多个用户并不是问题,因为我打算打开一个在服务器运行时可见的图像。 – eko

+0

如果你的要求,那么它的好,:) –

-2

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

+2

什么是不可能的 –

0

您可以使用open在浏览器中打开,并带有图片网址。可以使用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'); 

链接:

节点的Webkit:

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

Presentation nw.js

相关问题