2013-02-19 67 views
8

我是新來的node.js,但我知道有些關於使用此套接字的Web框架,我可以很容易地調用服務器端從JavaScript的node.js方法。我不知道如何在不使用該框架的情況下做到這一點。我怎樣才能從JavaScript調用node.js方法?如何從javascript調用node.js服務器端方法?

以下代碼使用socketstream調用服務器端方法。所以我想在不使用這個框架的情況下調用相同的服務器端方法。

ss.rpc('FileName.methodName',function(res){ 
    alert(res);   
}); 
+1

據我所知(糾正我,如果我錯了)的客戶端

var server = connect() .use(function (req, res, next) { var query; var url_parts = url.parse(req.url, true); query = url_parts.query; if (req.method == 'GET') { switch (url_parts.pathname) { case '/somepath': // do something call_some_fn() res.end(); break; } } }) .listen(8080); 

而且火AJAX要求,你不能直接調用從客戶端服務器上的方法。但是,您可以使用附加的方法名稱向服務器發送某種請求,然後服務器可以調用它。 – Supericy 2013-02-19 06:35:27

+0

@Supericy:謝謝你的迴應,但我不知道如何直接調用。你可以在代碼中解釋。 – user1629448 2013-02-19 06:38:03

+1

您需要公開客戶端請求的端點。使用express.js,可能類似'app.get('/ some.name',function(req,res){// call code})''。然後,您可以通過客戶端上的AJAX調用來訪問該端點。 – jli 2013-02-19 06:46:55

回答

10

我建議使用Socket.IO

服務器端代碼

var io = require('socket.io').listen(80); // initiate socket.io server 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); // Send data to client 

    // wait for the event raised by the client 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

和客戶端

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); // connec to server 
    socket.on('news', function (data) { // listen to news event raised by the server 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); // raise an event on the server 
    }); 
</script> 

另外,您可以使用路由器功能,在特定的r上調用一些函數eQUEST的從使用JQuery

$.ajax({ 
    type: 'get', 
    url: '/somepath', 
    success: function (data) { 
     // use data 
    } 
}) 
+0

如果Socket.IO沒有發送大量的請求(OP似乎表示),它可能會矯枉過正。 – jli 2013-02-19 06:48:07

+0

同意,或者當客戶端觸發HTTP請求時,他可以使用'connect'和路由器函數來調用某個函數。 – 2013-02-19 06:52:44

+0

謝謝all.I將嘗試使用socket.IO .. – user1629448 2013-02-19 06:59:07

相關問題