2015-06-22 196 views
0

是否可以從外部應用程序調用nodewebkit中的函數?從其他應用程序訪問Node-Webkit應用程序

例如。我想確定窗口是隱藏的,還是通過外部應用程序或applescript顯示。

+0

初次執行或運行後? – Brad

+0

運行後。我希望在後臺使用它,並在需要時激活它。 – Silve2611

+0

也許你可以使用socket.io服務器作爲應用程序之間的服務總線(你的node-webkit應用程序和外部應用程序) –

回答

1

我沒有與AppleScript語言寫的熟悉,但可能有socket.io

使用socket.io的實施庫,你可以在應用程序之間的行爲語言,socket.io像一個Node.js的EventEmitter(或發佈訂閱)之間,客戶可以發送事件並實時訂閱這些事件。

對於你的情況,你可以創建一個node.js

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

io.on('connection', function(socket){ 

    // Listens the 'control-hide' event 
    socket.on('control-hide', function() { 
     // Emit for all connected sockets, the node-webkit app knows hot to handle it 
     io.emit('hide'); 
    }); 

    // Listens the 'control-show' event 
    socket.on('control-show', function() { 
     // Emit for all connected sockets, the node-webkit app knows hot to handle it 
     io.emit('show'); 
    }); 
}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

一個socket.io服務器,並添加一個socket.io client到您的節點的WebKit應用

var socket = require('socket.io-client')('http://localhost:3000'); // I will assume that the server is in the same machine 

socket.on('connect', function(){ 
    console.log('connected'); 
}); 

// Listens the 'hide' event 
socket.on('hide', function(){ 
    // hide window 
}); 

// Listens the 'show' event 
socket.on('show', function(){ 
    // show window 
}); 

而且在這個例子中我會認爲另一javascript應用程序將控制「顯示」和「隱藏」操作

var socket = require('socket.io-client')('http://localhost:3000'); // I will assume that the server is in the same machine 

socket.on('connect', function(){ 
    console.log('connected'); 
}); 

// sends a 'control-show' event to the server 
function show() { 
    socket.emit('control-show'); 
} 

// sends a 'control-hide' event to the server 
function hide() { 
    socket.emit('control-hide'); 
} 
相關問題