我在NodeJS服务器端编程,我希望在客户端浏览器端调用
javascript函数.希望我可以在客户端浏览器端不时地从服务器端调用函数,就好像我只是在服务器端调用该函数一样.
是否有某种形式或彗星或RPC可以做到这一点?
解决方法
我检查了Socket.IO,但结果却使用了Faye. Faye可能比您想要的功能更多,但它的设置和使用非常简单.我发现它比Socket.IO更直观.不是说Socket.IO看起来很难,但是Faye看起来更容易.
这是网站:
你需要的是以下代码:
节点方:
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附加到节点中的快速服务器,这使得它可以很好地与Web服务器配合使用.