如何照顾与Socket.io通信的networking故障

我正在devise一个使用Socket.io,Nodejs,Expressjs,Redis,Angularjs的系统,在这个系统中消息传递非常重要。

用例:

我的系统需要侦听可以在多个用户之间共享的资源通知。 套接字连接到服务器与资源的信息,以便我可以维护每个资源的套接字列表。 当有资源的通知时,我会在每个套接字上为该资源发送通知。

ResourceID1 = ["scoketID1", "socketID2"] // Two sockets listening to ResourceID1 

我更新套接字断开此列表还通过删除该特定的套接字ID出或资源ID列表。

通过这种方式,我确保将通知发送给共享资源的每个用户以及该用户的每个会话以及每个可以是一个会话的多个选项卡的套接字。 总之“每个sockets”。

我也维护资源通知的散列,以便每次有资源的新通知特定的资源通知散列将被更新。

 ResourceID1-notificationHash : { key1:"124", key2: "abc" } 

这样做的原因是,如果套接字断开像用户closures选项卡或更重要的是因为某些原因用户互联网断开连接。 并且服务器不会再次收到心跳套接字连接,并将该资源的最后一条消息发送到该套接字。

为了确保特定的套接字(客户端)总是收到消息是我的执行足够?

我知道我可以实现一个事件的callback,但是我所做的是当一个特殊的选项卡(套接字)被断开,再次连接我发送该资源的最后一条消息。

是否有其他networking故障,可能导致可靠的消息传递的问题?

我的实现是不同的,因为对于消息传递,我不考虑用户,我正在考虑sockets,可以是一个用户可以多个sockets,就像一个用户可以在同一时间有多个会话可以说在Firefox和铬,然后为每个他可以打开多个选项卡。 select套接字的原因是我的资源可以在多个用户之间共享,所以对于一个资源更新,我可能不得不将消息发送给多个用户,每个用户有多个会话,每个会话有多个套接字。