2017-09-21 13 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 
}; 

내가 드루팔 8 플러그인의 알림 종류를 설치해야합니까?

알림 유형은 무엇입니까? 브라우저에서 HTML 5 Push Notification 팝업을 사용한다고 가정합니다.

누락 된 항목이 있습니까?

다른 사용자를 만들려고 시도했지만 다른 컴퓨터에서 확인했지만 운이 없었습니다. 알림 없음. 총 침묵.

나를 미치게합니다. 미리 감사드립니다.

답변

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; 

희망이 사람을 도움이됩니다. 건배.