zvse / private_message_messenger_nodejs
无需轮询即可实现私信的即时更新
Requires
- drupal/nodejs: ^1.0
- drupal/private_message: *
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 创建,但如果没有 Jaypan 在 Private Message 模块 上所做的大量出色工作,则此模块将不可能实现。