2015-10-18 2 views
2

Я разрабатываю приложение node.js, и я хотел бы знать, возможно ли это, и если да, то как: После запуска сервера node.js должен открыть новое окно на стороне сервера и показать изображение, генерируемое кодом.Node.js: Как открыть окно изображения на стороне сервера?

+0

с правильной комбинацией программного обеспечения, почти все, что можно –

+0

@eko См открытого модуля. –

ответ

0

Нехороший подход к открытию любого окна на стороне сервера, так как сервер будет доступен для доступа различными пользователями.

Но если вы хотите это сделать, вы можете использовать модуль nodejs и выполнить это изображение с расширением.

Пример

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, чтобы открыть в браузере с изображением 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'); 

Ссылки:

Node-Webkit:

Если вы используете node-webkit, вы можете создать окно (с html/css).

Presentation nw.js

Смежные вопросы