Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 客户端如何显示不断变化的服务器端变量的值?_Javascript_Html_Node.js - Fatal编程技术网

Javascript 客户端如何显示不断变化的服务器端变量的值?

Javascript 客户端如何显示不断变化的服务器端变量的值?,javascript,html,node.js,Javascript,Html,Node.js,在我的主页上有一个位置(即,在我的index.html中),我想显示一个名为serverVariable的服务器端全局变量。请注意,serverVariable根据运行nodejs的服务器端代码不断变化(即,serverVariable是一个javascript对象) 不幸的是,我不能将serverVariable放在index.html中,因为它(即客户端)不知道它是什么。有没有一种简单的方法可以将serverVariable传递给客户端,这样我就可以将它放在index.html中,并根据服务

在我的主页上有一个位置(即,在我的index.html中),我想显示一个名为
serverVariable
的服务器端全局变量。请注意,
serverVariable
根据运行nodejs的服务器端代码不断变化(即,
serverVariable
是一个javascript对象)


不幸的是,我不能将
serverVariable
放在index.html中,因为它(即客户端)不知道它是什么。有没有一种简单的方法可以将
serverVariable
传递给客户端,这样我就可以将它放在index.html中,并根据服务器端节点中发生的情况不断更新它?

使用socket.io可以在客户端和服务器之间建立持久连接。通过该连接,您可以将变量的任何更改通知客户机。 一个简单的例子是:

在服务器端:

var io = require('socket.io')(http);
io.on('connection', function() {
    //When client connects for the first time, send him the value immediately
    socket.emit('new_value', serverVariable);
});

//Everytime you change the value, send it to all the clients connected using:
io.emit('new_value', serverVariable);
在客户端:

var socket = io();
socket.on('new_value', function(serverVariable) {
    //Display it the way you want!
});
如果
serverVariable
是一个“简单”对象,即可以直接转换为json的对象,则此示例应该适合您的情况。另外,如果nodejs服务器是为主页服务的服务器,那么您需要调整第一行


有关socket.io的更多文档,请参阅。

不要使用ajax轮询,请使用socket.io之类的持久性工具,
socket.on('new_value',function(serverVariable){})
返回当前服务器端的
serverVariable
?Socket.IO实际上是基于事件的。在这个基本示例中。服务器正在发送
new\u value
事件(使用
emit()
)。随事件一起发送的数据是
serverVariable
。在您引用的代码示例中,客户机正在绑定一个函数,每当他接收到
new\u value
事件时,就会执行该函数。这不是向服务器请求变量值的一种方法,而是服务器在变量发生变化时使所有客户机保持最新状态。您还可以选择另一种解决方案,即客户机在需要时询问值。但我知道你希望它们一直是最新的。因此,这是我认为最好的解决方案。如何在客户端获得这种价值?如果
serverVariable
在服务器端是一个全局变量,那么可以通过引用变量
serverVariable
在客户端获取值吗?如果仔细查看我给您的代码,在客户端,
serverVariable
的作用域仅限于绑定到
new\u值
事件的匿名函数。因此,如果您想从其他地方引用它,则需要将其设置为全局,例如添加
globalServerVariable=serverVariable编码到匿名函数中。