2017-09-21 55 views
0

我已成功安裝並配置了帶有NodeJS模塊的Drupal 8。Drupal 8 + NodeJS已連接,但通知未顯示在前端

由於Nodejs Notifcations模塊(nodejs_notify)已啓用,我試圖廣播一條消息。我能得到什麼?完全沉默。沒有任何通知。這是在終端顯示:

[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' } 

這裏是我的配置設置:

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 
}; 

我是否需要安裝任何通知類型的插件在Drupal 8?

它會是什麼類型的通知?我假設在瀏覽器上彈出HTML 5推送通知。

有什麼我失蹤?

我試圖創建其他用戶,並在不同的計算機上檢查,但沒有運氣。沒有通知。完全沉默。

這讓我瘋狂。 在此先感謝。

回答

0

我有類似的問題nodejs & drupal 8.我終於設法使它工作。這是我能做到的:

解決方案有2個部分。

問題1.最初,錯誤是應用程序顯示無效令牌錯誤。
解決方案: - 設置json中的鍵需要用雙引號括起來,如下所示。

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 
}; 

問題2:Drupal可以連接到服務器,但通知仍然不起作用。

我的解決方案,它的工作:

這個問題似乎是在Nodejs.php文件中的類的NodeJS功能safeNodeServerVerion()。我更改了最後一行,如下所示:

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

節點版本的比較未按預期工作。

我刪除了'。'在版本字符串中,將它們轉換爲整數,然後進行比較。現在它似乎對我很好。

工作代碼:

$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; 

希望這可以幫助別人。乾杯。