如何从javascript调用node.js服务器端方法?

如何从javascript调用node.js服务器端方法?,javascript,node.js,Javascript,Node.js,我是node.js新手,但我对socketstream web框架有所了解,通过使用它,我可以轻松地从JavaScript调用服务器端node.js方法。我不知道如果不使用这个框架怎么做。如何从JavaScript调用node.js方法 下面的代码使用socketstream调用服务器端方法。因此,我希望在不使用此框架的情况下调用相同的服务器端方法 ss.rpc('FileName.methodName',function(res){ alert(res); });

我是node.js新手,但我对socketstream web框架有所了解,通过使用它,我可以轻松地从JavaScript调用服务器端node.js方法。我不知道如果不使用这个框架怎么做。如何从JavaScript调用node.js方法

下面的代码使用socketstream调用服务器端方法。因此,我希望在不使用此框架的情况下调用相同的服务器端方法

ss.rpc('FileName.methodName',function(res){ 
    alert(res);         
});
我建议使用

服务器端代码

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>
并使用JQuery发出AJAX请求

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

不是exaclty sockets,而是一个简单的解决方案:

我建议你试试。它基本上允许将API作为简单函数调用,而无需考虑AJAX请求、获取、表达等。基本上,在服务器中您可以:

const ApiMount = apiMountFactory()
ApiMount.exposeApi(api)
“api”基本上是您愿意从web应用程序调用的方法/函数的对象

然后在web应用程序上执行以下操作:

const api = mountApi({baseUrl: 'http://your-server.com:3000'})
完成后,您可以像下面这样调用API:

const result = await api.yourApiMethod()

试试看。希望有帮助。

Afaik(如果我错了,请纠正我),您不能直接从客户端调用服务器上的方法。但是,您可以向服务器发送某种附加方法名称的请求,然后服务器可以调用它。@上级:谢谢您的响应,但我不知道如何直接调用。您可以在代码中解释一下吗。您需要公开一个端点,以便客户端进行请求。对于express.js,这可能类似于
app.get('/some.name',function(req,res){//call code})
。然后,您可以通过客户端上的AJAX调用访问该端点。如果他们没有发送大量请求(OP似乎指出了这一点),那么Socket.IO可能会有过大的杀伤力。同意,或者,他可以使用
connect
和一个路由器函数在客户端发出
HTTP
请求时调用某个函数。我知道这个线程有点过时,但是使用
express
怎么样?作为
var app=express();。。。。。get('/dbquery',function(req,res){//do some db stuff….})。。。。。listen(2999,function(){…})
这将使服务侦听端口2999,对
/dbquery
服务的任何调用都将根据请求返回/执行某些操作。
const result = await api.yourApiMethod()