zvse / private_message_messenger_nodejs

无需轮询即可实现私信的即时更新

安装: 22

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 3

语言:JavaScript

类型:drupal模块

1.5 2019-11-14 07:36 UTC

This package is auto-updated.

Last update: 2024-09-27 20:42:44 UTC


README

这是对https://github.com/jez500/Private-Message-NodeJS的纯分支,包名已更改

Private Message NodeJS

无需轮询即可实现Private Message Messenger模块的即时更新和通知

该模块监听私信线程更新,并使用drupal nodejs模块触发UI更新并为更改的线程成员提供通知。

注意:这与Private message nodejs模块不同。
此模块是为了与Private Message Messenger一起使用而编写的,它们两者配合良好。

正常工作方式

轮询是检查消息更新的标准方法,这意味着网站会每XX秒击打你的服务器以查看是否发生了变化。这并不是理想的方法,因为它会给你的服务器带来很多额外的负载,而且也意味着用户必须等待XX秒才能收到回复。如果禁用轮询,则需要进行完整的页面刷新!

为什么这是一个巨大的改进

  • 无需轮询即可加快浏览器速度
  • 无需在服务器上产生不必要的持续负载
  • 消息线程立即显示新消息
  • 收到新消息时(可选)在页面内浏览器通知。

要求

这不是必需的,但此模块已被特别设计用于与Private Message Messenger一起使用,如果您不使用它,您将必须实现自己的集成(以下说明如何连接到通知)。

连接到通知

此模块在$(window)上触发事件,因此您只需监听窗口的事件即可。例如

$(window).on('pm:threads:poll', function(event, data) {
  console.log(data);
  alert('New message from ' + data.ownerName);
});

安装

只需键入

composer require zvse/private_message_nodejs

然后... drush en -y private_message_nodejs

2. 确保您已设置并启用NodeJS

在此处查看基本指南。我在撰写时的步骤

  • 在您的服务器上安装NodeJS v4.2.6
  • 应在docroot之外运行npm install drupal-node.js,并将默认值设置为node_modules文件夹
  • 进入cd node_modules/drupal-node.js并执行cp nodejs.config.js.example nodejs.config.js
  • 编辑nodejs.config.js以设置您的配置,至少设置serviceKey为一个随机值,我还必须更新backend.host以使用我drupal站点的正确URL
  • 启动服务器node app.js还可以考虑使用forever
  • 在您的drupal站点中,转到/admin/config/nodejs/settings并添加您上面创建的serviceKey。其他设置应与您的nodejs.config.js文件匹配(唯一需要更改的是主机)
  • 状态报告页面/admin/reports/status应指示drupal已找到NodeJS服务器

注意1:在撰写本文时,drupal/nodejs的“稳定”版本(v1.1)实际上相当不健全,1.x-dev版本要稳健得多。

注意 2:为了使用 https 支持与 drupal/nodejs,您可能需要 此补丁

3. 通知 - 可选,但便于测试

启用 nodejs_notify 模块,打开几个浏览器窗口,在其中之一中转到 /admin/config/nodejs/broadcast 以发送消息给其他所有窗口。如果这样操作成功,则此模块应该可以使用了!

nodejs_notify 模块还提供了 jGrowl,该插件用于此模块中的通知。如果您不想启用 nodejs_notify 但仍需要通知,则可以手动包含 jGrowl

4. 禁用轮询

您不再需要它,将信使块和配置的 Ajax 刷新率 设置为 0,这样它就不会再进行轮询。

5. 测试

如果您正在使用 Private Message Messenger,请打开两个不同的浏览器,每个浏览器以不同的用户登录,从一个用户向另一个用户发送消息,您应该会看到线程和块立即更新并显示通知。

作者

此模块由 Jeremy Graham 创建,但如果没有 JaypanPrivate Message 模块 上所做的大量出色工作,则此模块将不可能实现。