如何在服务器推送通知模型(How to model Push Notifications on se

2019-07-30 02:33发布

简要说明

那么,既然多天我一直在寻找的答案,这个问题,但似乎有答案“如何创建一个推送通知服务器”和这样的问题。 我使用Node.js的,它是很容易“创造”使用sock.js(我听说socket.io不好相比sock.js)推送通知服务器。 没问题,到这里。 但我要的是如何在这样的服务器模型

联系方式

OK,所以,让我们说我有一个应用程序,其中有一个聊天服务(只是一个例子,这是实际的事情是大,你可能已经猜到了)。 一个人在一个房间发送一条消息,并都在房间里的人得到通知。 但我要的是一个“有状态”聊天 - 那就是我想要的信息存储在数据存储中。 在此处,麻烦来了。 在数据库中存储的信息,后来逢人便说:“嘿,有你的消息”。 当我们需要的只是一个应用程序的一部分实时活动这似乎很容易。 当整个应用程序是基于实时通信怎么办? 除此之外,我也希望有一个RESTful API。

我的解决方案(与我不是真正的快乐)

我认为做的是这样的:(当然上的服务器端)

                 Data Store
                     ||
                 Data Layer (which talks to data store)
                     ||
            ------------------
            |                |
     Real-Time Server   Restful server

而在这里,实时服务器监听到数据层发布有趣的事件。 每当一些有趣的事情发生,服务器通知客户端。 但是哪些客户? -这是我的方法的问题

希望你能有所帮助。 :)

更新

我想我忘了强调我的问题的一个重要组成部分。 如何实现发布 - 订阅系统? (注:我不想实际的代码,我管理我自己,只是如何去这样做是我需要一些帮助)。 问题是,我写代码的时候得到相当猛然一惊 - 怎么办如何(我的困惑是这个问题本身比较明显)。 能否请您提供一些参考阅读或一些建议就如何使用这个东西了么?

Answer 1:

我不知道如果我理解正确的你; 但我会总结我怎么看它:

  1. 我们有一个使用套接字连接发布新的消息发送给所有连接的客户端实时聊天服务器。
  2. 我们有我们想要保持聊天记录的数据库。
  3. 我们也有一个RESTful接口来访问实时服务器,以获得当前聊天的懒惰的方式。

而要构建您的系统是这样的:

在上图中,我有紫色曲线盘旋的组件要像所有其他客户端进行更新。 我对吗? 我不知道你用“数据层”的意思,但我认为这是一个将被写入数据库,同时还对其他组件的接口数据库中的守护进程。

在这种架构中,一切都在你的意思方向没关系。 我的意思是数据存储是由服务器连接来访问数据,也许可以查询认证客户端凭证,也许读取用户的喜好等。

对于来自这些组件的其他期望,我的意思是,让这些组件等连接的客户端进行更新,你为什么不使他们成为客户呢?

您实时的服务器是客户端的服务器; 但它也为数据层,或数据库服务器的客户端,如果我们喜欢比较常见的命名。 因此,我们已经知道,没有什么东西是从一个客户端停止服务器。 那么,为什么不能我们的数据库系统和基于REST的系统也是客户? 将其连接到服务器实时连接你的浏览器和其他客户端的方式相同。 让他们享受被人之一。 :)

我希望我没有明白一切完全错误的,这是有道理的提问。



文章来源: How to model Push Notifications on server