node.js - 如何从 NodeJS 服务器端在客户端浏览器上调用 javascript 函数?

标签 node.js connect comet

我在 NodeJS 服务器端编程,我希望在客户端浏览器端调用一个 javascript 函数。希望我可以时不时地从服务器端调用客户端浏览器端的函数,就好像我只是调用服务器端的函数一样。

是否有某种形式或 cometd 或 RPC 可以做到这一点?

最佳答案

我检查了 Socket.IO,但最终改用了 Faye。 Faye 的功能可能比您想要的多一点,但它的设置和使用非常简单。我发现它比 Socket.IO 更直观。并不是说 Socket.IO 看起来很难,而是 Faye 看起来更简单。

这是网站:

http://faye.jcoglan.com/

还有一个谷歌用户组,作者已经回答了我的几个问题。

您需要的是以下代码:

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/

相关文章:

javascript - main.js Electron中程序的执行顺序(其中还使用了nodejs的child_process的exec)

node.js - 如何在node js中获取当前用户的个人资料

php - 高效地重新加载数据/将数据从服务器推送到客户端

java - 在 glassfish 服务器中启用 cometd

ruby-on-rails - 未定义的方法 `close_connection_after_writing'

javascript - Node.js,不调用处理程序回调

java - 在车队管理应用程序中使用 node.js

node.js - node+now.js+connect 给我一个错误

android - HttpUrlConnection.connect 抛出异常

linux - 连接到你自己(并占用一个端口号)