【问题标题】:Node.js: How to open an image window on server side?Node.js:如何在服务器端打开图像窗口?
【发布时间】:2016-01-16 16:46:44
【问题描述】:

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

【问题讨论】:

  • 通过正确的软件组合,几乎一切皆有可能
  • @eko 查看打开的模块。

标签: javascript node.js web server


【解决方案1】:

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

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

使用 express 的 Hello world 示例。

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);
});

【讨论】:

  • 完美,谢谢!拥有多个用户不是问题,因为我将只打开一个在服务器运行时可见的图像。
【解决方案2】:

您可以使用open在浏览器中打开,带有图片网址。

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');

链接:

Node-Webkit:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 没有什么是不可能的
    猜你喜欢
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2017-09-23
    • 1970-01-01
    • 2017-12-29
    相关资源
    最近更新 更多