Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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_Json_Node.js - Fatal编程技术网

Javascript 服务器与服务器之间共享数据的节点;客户

Javascript 服务器与服务器之间共享数据的节点;客户,javascript,json,node.js,Javascript,Json,Node.js,有没有一种方法可以使用node&socketIo/express以某种方式将对象变量绑定到客户端,使其行为类似于reactive meteor,并保持与meteor同步的方式 换句话说,例如,我在node.js脚本中有一个JSON对象变量: var marksObject = { firstValue : 'this is the first value' , secondValue : 'this is the second value' }; 我正在寻找一种简单的方法

有没有一种方法可以使用node&socketIo/express以某种方式将对象变量绑定到客户端,使其行为类似于reactive meteor,并保持与meteor同步的方式

换句话说,例如,我在node.js脚本中有一个JSON对象变量:

var marksObject = {
    firstValue   : 'this is the first value' ,
    secondValue  : 'this is the second value'
};
我正在寻找一种简单的方法,使marksObject同时出现在客户端和节点服务器中并同步。因此,如果在客户端或节点服务器上发生更改,则更改似乎在这两个位置都发生

理想情况下,这只需要几行代码,我不需要编写任何东西来手动保持客户机和节点服务器的同步

Redis看起来很有趣,但对于我正在尝试的东西来说,似乎有些过头了


非常感谢。

只需编写一些包含getter和setter的包装器类。并在“设置”时将更新发送到另一方。

看来,我们只需付出最小的努力就可以做到这一点

deepstream服务器:

var DeepstreamServer = require('deepstream.io');
var server = new DeepstreamServer();
server.set('host', '192.168.123.123');
server.set ('port', 6020 );
server.set ('tcpPort', 6021 );    
// this is the default, but its a nice reminder
server.start();
节点“客户端”(在服务器上运行,但其行为与客户端类似):

要在一个或多个浏览器中运行的浏览器“客户端”

<script type='text/javascript' src='deepstream.min.js'></script>
<script type='text/javascript'>
ds = deepstream( '192.168.123.123:6020' ).login();
record = ds.record.getRecord( 'clientRecord' );
record.set ('clientField', 'test test from a browser!');
record.subscribe ('clientField' , function (value)  {
            console.log('subscribed value: ' + value)
});
//   for fun, enter     record.get('clientField');  in the console too
//   and also enter    record.set('clientField', 'this is what i entered in the console!');
</script>

ds=deepstream('192.168.123.123:6020').login();
record=ds.record.getRecord('clientRecord');
record.set('clientField','test test from browser!');
record.subscribe('clientField',函数(值){
console.log('订阅值:'+值)
});
//为了好玩,输入record.get('clientField');也在控制台里
//并输入record.set('clientField','这是我在控制台中输入的内容!');

这种方法会自动同步客户端和服务器之间的JSON结构吗?当然。这就是您将要实现的。您还可以看看,它是一个非常容易构建实时应用程序的框架。它的一个主要优点是,它使您能够在服务器和客户端之间共享代码。顺便说一句:您现在可以从CLI运行deepstream,因此您可以将第一个代码段替换为
/deepstream start
,端口6020和6021是默认值,IP将默认为0.0.0.0,因此所有网络接口都可以访问服务器。
<script type='text/javascript' src='deepstream.min.js'></script>
<script type='text/javascript'>
ds = deepstream( '192.168.123.123:6020' ).login();
record = ds.record.getRecord( 'clientRecord' );
record.set ('clientField', 'test test from a browser!');
record.subscribe ('clientField' , function (value)  {
            console.log('subscribed value: ' + value)
});
//   for fun, enter     record.get('clientField');  in the console too
//   and also enter    record.set('clientField', 'this is what i entered in the console!');
</script>