我是node.js的新手,但我对socketstream web framework有所了解,我可以轻松地从JavaScript调用服务器端node.js方法。如果不使用该框架,我不知道该怎么做。如何从JavaScript调用node.js方法?
以下代码使用socketstream来调用服务器端方法。所以我想在不使用这个框架的情况下调用相同的服务器端方法。
ss.rpc('FileName.methodName',function(res){
alert(res);
});
答案 0 :(得分:15)
我建议使用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>
或者,您可以使用路由器功能,根据客户端的特定请求调用某些功能
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);
使用JQuery发送AJAX
请求
$.ajax({
type: 'get',
url: '/somepath',
success: function (data) {
// use data
}
})
答案 1 :(得分:0)
不是专用套接字,而是一种简单的解决方案:
我可以建议尝试使用api-mount。它基本上允许将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()
尝试一下。希望对您有所帮助。