2013-02-19 130 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

相关问题