繁体   English   中英

通过PHP网站上的socket.io进行通知

[英]Notifications via socket.io on php site

我正在用PHP建立一个网站,以JSON格式处理Redis中的会话。

这样,PHP解释器和node.js服务器都可以访问该会话。

我现在想做的是在上述网站中添加通知; 我在想的过程如下:(只需将其视为一个简单的朋友请求即可简化所有过程)

  1. 用户A发送朋友请求。
  2. PHP使用cURL对node.js服务说以发送通知
  3. 用户B收到通知,因为他通过socket.io连接到node.js

要实现这一目标的一般准则是什么? 因为在我看来,如果用户A和B在不同的服务器中,则不可能水平扩展;因此,

提前致谢。

听起来像这样,您可以在此处使用带有发布/订阅协议,体系结构的Web套接字。

您可以通过Web套接字获得Server客户端功能。 对于许多小型IO的websocket服务器,Node是理想的选择。 参见http://en.wikipedia.org/wiki/Web_sockets

我不认为php-节点通信是否需要共享会话,只需让您的客户端通过套接字推送请求并根据需要处理休止符即可。

我认为您提出的方法听起来很合理。 但是,您可以考虑使用消息队列(zeromq,rabbitmq等)来代替对服务的直接请求,因为它可以轻松地扩展逻辑,因为您可以轻松地向队列处理中添加逻辑以将消息传递给正确的节点实例。

我设法在便宜的VPS上获得了与socket.io的1400个并发连接,没有进行特殊配置,因此即使没有技巧,它也可以很好地扩展。 以我为例,这些连接中的大多数也几乎一直在发送和接收数据。 它可能处理的还不止此,1400's仅仅是我碰巧获得的最大用户数。

尽管我更担心让所有这些用户优先;)

使用Redis的内置pub-sub功能。 PHP服务器收到请求后,会将其发布到为此目的而设置的通道中。 您的每个节点服务器都订阅该频道,并检查所涉及的用户是否已连接到该频道。 如果是这样,它将通过socket.io发送通知。 另外,您避免了额外的网络连接,并且简化了总体逻辑。

只需根据需要设置您的数据库,然后每当进行一项活动时就告诉您的节点js通过redis将相关信息传递到php并进行处理,然后通过通道将响应从php返回到节点,请继续检查表中的通知节目

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM