我在 NodeJS 服务器端编程,我希望在客户端浏览器端调用一个 javascript 函数。希望我可以时不时地从服务器端调用客户端浏览器端的函数,就好像我只是调用服务器端的函数一样。
是否有某种形式或 cometd 或 RPC 可以做到这一点?
最佳答案
我检查了 Socket.IO,但最终改用了 Faye。 Faye 的功能可能比您想要的多一点,但它的设置和使用非常简单。我发现它比 Socket.IO 更直观。并不是说 Socket.IO 看起来很难,而是 Faye 看起来更简单。
这是网站:
还有一个谷歌用户组,作者已经回答了我的几个问题。
您需要的是以下代码:
Node 端:
var faye = require('faye');
var faye_server = new faye.NodeAdapter({mount: '/faye', timeout: 120});
console.log('Firing up faye server. . . ');
faye_server.listen(8089);
//send message out every 1 second
setInterval( function()
{
var currentTime_secsSinceEpoch = new Date().getTime() / 1000;
faye_server.getClient().publish('/heartbeat',
{
pageName: 'app.js',
timeMessageSent_secs_since_epoch: currentTime_secsSinceEpoch,
iFrame1CycleCount: iFrame1CycleCount
});
}, 1000);
浏览器端:
<script type='text/javascript'>
//create faye client
var faye_client = new Faye.Client('http://127.0.0.1:8089/faye');
var faye_message_subscription = faye_client.subscribe('/heartbeat', function(message)
{
//record the time message was received
var receiveTime_secSinceEpoch = new Date().getTime() / 1000;
console.log("Got heartbeat at " + receiveTime_secsSinceEpoch + "with a delay of " +
receiveTime_secsSinceEpoch - message.currentTime_secsSinceEpoch + " secs");
//Do something else important here!!
}
</script>
就是这样!现在,每次您的服务器发送“心跳”消息时,您的网页都会调用我们指定的函数并向控制台吐出一条消息。非常简单。
Faye 有许多您可能想要使用的其他很酷的功能,但我认为这主要是您想要的。
您可以非常轻松地将 Faye 附加到 node 中的 express 服务器,这使得它可以很好地与网络服务器一起工作。
关于node.js - 如何从 NodeJS 服务器端在客户端浏览器上调用 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17408247/