小编sca*_*les的帖子

在自定义类上使用JSON.stringify

我正在尝试将对象存储在redis中,这是一个类的实例,因此具有函数,这是一个示例:

function myClass(){
    this._attr = "foo";
    this.getAttr = function(){
        return this._attr;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将这个对象与函数一起存储在redis中?我试过JSON.stringify()但只保留了属性.如何存储函数定义并能够执行以下操作:

var myObj = new myClass();
var stringObj = JSON.stringify(myObj);
// store in redis and retreive as stringObj again
var parsedObj = JSON.parse(stringObj);

console.log(myObj.getAttr()); //prints foo
console.log(parsedObj.getAttr()); // prints "Object has no method 'getAttr'"
Run Code Online (Sandbox Code Playgroud)

我怎么才能foo打电话parsedObj.getAttr()

先感谢您!

编辑

有建议修改MyClass.prototype并存储值,但是这样的东西(除了setter/getter之外的函数):

function myClass(){
    this._attr = "foo";
    this._accessCounts = 0;
    this.getAttr = function(){
        this._accessCounts++;
        return this._attr;
    }
    this.getCount = function(){
        return this._accessCounts;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图说明一个函数,除了做其他的东西之外,它会在调用时计算类似计数或平均值的函数.

javascript json node.js

6
推荐指数
2
解决办法
2万
查看次数

socket.io强制断开XHR轮询

我有一个客户端/服务器应用程序使用服务器上的nodejs和socket.io作为连接机制.由于与我的应用程序相关的原因,我希望每个浏览器只有一个活动连接,并拒绝来自其他选项卡的所有连接,这些连接可能会在会话期间稍后打开.这个伟大的工程使用WebSockets,但是如果的WebSockets不是由浏览器和XHR轮询支持来代替,断开不会发生,因此,如果用户只需刷新页面,这不被解释为再连接(我有一个延迟重新连接和会话恢复),但作为一个新选项卡,在连接中结束被拒绝,因为此相同选项卡生成的旧连接仍处于活动状态.

我正在寻找一种方法,以便在发生刷新时从客户端有效地结束连接.我已经尝试绑定到客户端beforeunload并调用socket.disconnect()它,并且还发送了一条消息,socket.emit('force-disconnect')并且触发了与服务器的断开连接,但没有成功.我在这里错过了什么吗?感谢您的帮助!

我已经阅读了这个问题,并且发现它对我的特定情况没有用.

long-polling node.js socket.io

4
推荐指数
1
解决办法
5468
查看次数

Socket.io断开连接和redis

我试图通过从保存所有数据的常规数据结构切换到使用 redis 和集群来扩展我的 socket.io 应用程序。但是,我遇到了一些问题,因为在当前实现的某个时刻,我将套接字对象以及其他属性存储在该数据结构中,data[socket.id].socket = socket因为在我的应用程序中有时我需要data[someId].socket.disconnect()手动断开套接字。

我知道我无法将对象直接存储到redis中,所以我尝试使用JSON.stringify(socket)但没有成功,因为socket是循环的。是否有另一种方法仅使用 来断开套接字id?这样我就可以id像这样存储data[socket.id].id = socket.id,也许可以称之为类似data[someId].id.disconnect()的东西。所以基本上我正在寻找一种方法来断开套接字,而无需访问实际的套接字对象(我确实可以访问该io对象)。

感谢大家的帮助。

scalability redis node.js socket.io

4
推荐指数
1
解决办法
3497
查看次数