Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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 将socket.io发射存储在全局数组中+;Node.js_Javascript_Node.js_Sockets_Socket.io_Socket.io Redis - Fatal编程技术网

Javascript 将socket.io发射存储在全局数组中+;Node.js

Javascript 将socket.io发射存储在全局数组中+;Node.js,javascript,node.js,sockets,socket.io,socket.io-redis,Javascript,Node.js,Sockets,Socket.io,Socket.io Redis,是否有一种方法可以将socket.io的所有发射存储在一个全局数组中,这样当新用户加入网站时,我可以通过发射进行循环,并可以拾取当前“画布绘制”的位置。我希望新用户看到已经完成了哪些工作,然后就这些工作进行协作 我还有别的办法吗 如果您只想在服务器运行期间存储emit,只需声明一个模块级数组并将每个emit推入该数组即可。然后,在服务器执行期间的任何将来时间,您都可以查阅阵列 如果希望跨服务器调用存储emit,则需要将它们存储到某个持久性存储(文件、数据库等) 或者,如果您试图存储所有传出的.e

是否有一种方法可以将socket.io的所有发射存储在一个全局数组中,这样当新用户加入网站时,我可以通过发射进行循环,并可以拾取当前“画布绘制”的位置。我希望新用户看到已经完成了哪些工作,然后就这些工作进行协作


我还有别的办法吗

如果您只想在服务器运行期间存储emit,只需声明一个模块级数组并将每个emit推入该数组即可。然后,在服务器执行期间的任何将来时间,您都可以查阅阵列

如果希望跨服务器调用存储emit,则需要将它们存储到某个持久性存储(文件、数据库等)

或者,如果您试图存储所有传出的
.emit()
数据,则可以重写该方法并保存发送的数据

var outgoingEmits = [];
(function() {
    var oldEmit = io.emit;
    io.emit = function(msg, data) {
        outgoingEmits.push({msg: msg, data: data});
        return oldEmit.apply(this, arguments);
    };
})();

由于可能发送或接收许多不同的消息,您可以添加自己的逻辑来决定哪些消息保存在阵列中或不保存。

如果您只想在服务器运行期间存储emit,只需声明一个模块级阵列,并将每个emit推入该阵列即可。然后,在服务器执行期间的任何将来时间,您都可以查阅阵列

如果希望跨服务器调用存储emit,则需要将它们存储到某个持久性存储(文件、数据库等)

或者,如果您试图存储所有传出的
.emit()
数据,则可以重写该方法并保存发送的数据

var outgoingEmits = [];
(function() {
    var oldEmit = io.emit;
    io.emit = function(msg, data) {
        outgoingEmits.push({msg: msg, data: data});
        return oldEmit.apply(this, arguments);
    };
})();

由于可能会发送或接收许多不同的消息,您可以添加自己的逻辑来决定哪些消息保存在阵列中。

我是将阵列添加到服务器端还是客户端?@Arihant-这完全取决于您尝试执行的操作。我假设您希望服务器收集数据,因此当新客户端连接到服务器时,您可以将收集的数据发送到新客户端。如果是这种情况,那么阵列需要位于服务器上。我是将阵列添加到服务器还是客户端?@Arihant-这完全取决于您要执行的操作。我假设您希望服务器收集数据,因此当新客户端连接到服务器时,您可以将收集的数据发送到新客户端。如果是这种情况,那么阵列需要位于服务器上。