开放式社交网络(OSN网络)之四:OSN网络的运行原理

  当企业的服务器以节点形式加入了OSN网络以后,用户如何与企业服务器以外的其他用户通信?
假设现在有APP1和APP2两款APP都加入了OSN网络,为了方便我们假设APP1叫微信,APP2叫陌陌,APP1的服务器是S_WX,APP2的服务器是S_MM。
  现在我(Alice)是一个微信用户,我有一个朋友(Bob)在使用陌陌。
  首先Alice通过终端向S_WX发送一条消息,这条消息是发送给Bob的。
  第二步,S_WX会在服务器内部查看Bob是否在线,不在线则会在全网络发送找人命令(首次会直接发送,第二次发送给Bob的消息会等待10分钟,10分钟后消息没有取走则会发送找人的命令)。
  第三步,S_MM收到消息以后,会去取一个属于Bob的消息列表,然后告诉Bob,有哪些人给Bob发送了消息。
  第四步,Bob筛选自己需要的消息以后委托S_MM将消息取回。
  第五步,Bob取得消息以后发送消息已取的回复,这样Alice和Bob就完成了跨软件通信。
如果服务器上的消息长时间没有被取走,服务器可以定一个保留时间,建议保留7天或者1个月。
  
  用户如何加好友?
  由于每个APP系统的账户体系有所区别,账号的生成由服务器指定,很不利于OSN网络的推广。因此OSN网络采用了在用户终端随机生存账号的形式生成。具体请参见github上公布的账号生成方式。如果目前企业已经有了自己的账号体系,可以将两个账号进行一个绑定,即可完成兼容。
  添加好友有3种方式。
  第一种是双方相互交换账号。这种方式类似于双方交换手机号码。双方都要添加了对方的二维码以后才能相互通信。我们建议终端用户对于陌生的消息给予拒收。
  第二种方式是一端在知道对方账号的情况下发送命令。这种方式需要其他服务器以及终端策略接收加人命令的情况下才能完成。
  第三种方式是由熟人介绍。假设现在有ABC三人,AB认识,BC认识。B希望把AC介绍成为朋友。B会给AC双方发送一个推荐的命令。AC双方会回给B一个是否同意的回复,B再转发给AC。完成添加好友操作。
具体请参见github上公布的添加好友命令信息。
  
  是否支持语音和短视频?OSN网络支持文件分片传输,语音和短视频属于文件类。语音和短视频还需要根据不同终端的支持的格式而定。
  跨软件通信的安全性如何解决?OSN网络的账户内带有ECC公钥,用户发送的消息全都会进行加密以后再传输,传输过程中不会被窃听。
  假设用户手机丢失,私钥可能被复制的情况下如何解决?假设用户觉得自己的私钥可能丢失,可以使用另一把安全私钥对通信私钥进行更新,并通知自己的好友更换账号。安全私钥不会存储在本地,使用时需要用户输入密码才能使用。安全私钥的hash保留在账号中。
  
目前OSN网络只完成了部分基础功能,我们的团队目前还很弱小,期待更多的朋友参与这个开源项目。

猜你喜欢

转载自www.cnblogs.com/osnw/p/12044127.html