2013-02-19 25 views
8

node.js'ye yeni geldim ama bunu kullanarak socketstream web çerçevesi hakkında bir şeyler biliyorum. JavaScript'ten bir sunucu tarafı node.js yöntemini kolayca arayabilirim. Bu çerçeveyi kullanmadan bunu nasıl yapacağımı bilmiyorum. JavaScript'den node.js yöntemini nasıl arayabilirim?javascript'ten node.js sunucu tarafı yöntemi nasıl aranır?

Aşağıdaki kod, sunucu tarafı yöntemini çağırmak için socketstream işlevini kullanıyor. Bu yüzden bu çerçeveyi kullanmadan aynı sunucu tarafı yöntemini aramak istiyorum.

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

Afaik (yanılıyorsam beni düzeltin) kullanılarak istemci

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

Ve ateş AJAX isteğinden equest, doğrudan bir istemciden sunucuda bir yöntemi çağırmak olamaz. Ancak, eklenmiş bir yöntem adıyla sunucuya bir çeşit istek gönderebilirsiniz ve sunucu bunu çağırabilir. – Supericy

+0

@Supericy: Cevabınız için teşekkürler, ancak doğrudan nasıl arayacağımı bilmiyorum. – user1629448

+1

İstemcinin talep etmesi için bir bitiş noktasını göstermeniz gerekir. Express.js ile bu, app.get ('/ some.name', function (req, res) {// call code}) 'gibi bir şey olabilir. Daha sonra bu uç noktaya istemcide bir AJAX çağrısı ile ulaşabilirsiniz. – jli

cevap

10

Ben kullanım Socket.IO

Sunucu tarafı kodu

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

ve

<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> 

Alternatif istemci tarafı, bir yönlendirici işlevini kullanabilirsiniz öneririm hangi belirli r üzerinde bazı fonksiyonları çağırır JQuery

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

Socket.IO, çok sayıda istek göndermiyorsa (OP'nin gösterdiği gibi) aşırı sıkışık olabilir. – jli

+0

Anlaşılan, alternatif olarak 'connect' ve client ''' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' istek' 'yangın çıktığında bir işlevi çağırmak için bir yönlendirici işlevini kullanabilir. –

+0

all için teşekkürler. Socket.IO kullanmaya çalışacağım .. – user1629448

İlgili konular