2017-09-21 2 views
0

J'ai installé et configuré avec succès le module Drupal 8 avec NodeJS.Drupal 8 + NodeJS connecté mais la notification n'apparaît pas sur le frontend

Depuis que le module Notifcations Nodejs (nodejs_notify) est activé, j'ai essayé de diffuser un message. Qu'est-ce que je reçois? Silence total. Aucune notification nulle part. C'est ce que le terminal montre:

[2017/09/21 16:43:45] Route callback: checkServiceKey 
[2017/09/21 16:43:45] Route callback: publishMessage 
[2017/09/21 16:43:45] Body 
{ broadcast: true, 
    data: { subject: 'hey ', body: 'hey' }, 
    channel: 'nodejs_notify' } 
[2017/09/21 16:43:45] broadcastMessage 
{ broadcast: true, 
    data: { subject: 'hey ', body: 'hey' }, 
    channel: 'nodejs_notify' } 

Voici mon paramètre de configuration:

settings = { 
    scheme: 'http', 
    port: 8888, 
    host: 'localhost', 
    resource: '/socket.io', 
    serviceKey: 'test', 
    backend: { 
    port: 80, 
    host: '178.62.13.67', 
    scheme: 'http', 
    basePath: '', 
    messagePath: '/nodejs/message' 
    }, 
    debug: true, 
    sslKeyPath: '', 
    sslCertPath: '', 
    sslCAPath: '', 
    baseAuthPath: '/nodejs/', 
    extensions: [], 
    clientsCanWriteToChannels: false, 
    clientsCanWriteToClients: false, 
    transports: ['websocket', 'polling'], 
    jsMinification: true, 
    jsEtag: true, 
    logLevel: 1 
}; 

Ai-je besoin d'installer tout type de notification de plug-in dans Drupal 8?

De quel type de notification il s'agit? Je suppose HTML 5 Push notification contextuelle sur le navigateur.

Y at-il quelque chose qui me manque?

J'ai essayé de créer d'autres utilisateurs et sur vérifié sur différents ordinateurs mais pas de chance. Aucune notification Silence total.

Ça me rend fou. Merci d'avance.

Répondre

0

J'ai eu des problèmes similaires avec nodejs & drupal 8. J'ai finalement réussi à le faire fonctionner. Voici comment je pourrais le faire:

Il y avait 2 parties à la solution.

Problème 1. Au départ, l'erreur était que l'application affichait une erreur de jeton non valide.
Solution: - Les clés dans les paramètres json doivent être entre guillemets comme suit.

settings = { 
    "scheme": "http", 
    "port": 8080, 
    "host": "", 
    "resource": "socket.io", 
    "serviceKey": "AS GIVEN IN DRUPAL NODEJS SETTINGS", 
    "backend": { 
    "port": 80, 
    "host": "myhost.dev", 
    "scheme": "http", 
    "basePath": "", 
    "messagePath": "/nodejs/message" 
    }, 
    "debug": true, 
    "sslKeyPath": "", 
    "sslCertPath": "", 
    "sslCAPath": "", 
    "baseAuthPath": "/nodejs/", 
    "extensions": [], 
    "clientsCanWriteToChannels": false, 
    "clientsCanWriteToClients": false, 
    "transports": ["websocket", "polling"], 
    "jsMinification": true, 
    "jsEtag": true, 
    "logLevel": 1 
}; 

Problème 2: Drupal peut se connecter au serveur, mais la notification ne fonctionne toujours pas.

Ma solution qui a fonctionné:

La question semblait être dans la fonction safeNodeServerVerion() de classe à l'intérieur NodeJS fichier Nodejs.php. J'ai changé la dernière ligne comme suit:

/** This was the original line **/ 
return $this->nodeServerVersion && $this->nodeServerVersion >= self::SAFE_NODE_SERVER_VERSION; 

La comparaison des versions de noeud, ne fonctionnait pas comme prévu.

J'ai supprimé le '.' dans les chaînes de version, les a castés comme des entiers, puis comparés. Cela semble fonctionner correctement pour moi maintenant.

Code de travail:

$node_ver = (int)str_replace('.', '', $this->nodeServerVersion); 
$safe_node_ver = (int)str_replace('.', '', self::SAFE_NODE_SERVER_VERSION); 
return $this->nodeServerVersion && $node_ver >= $safe_node_ver; 

Hope this helps quelqu'un. À votre santé.