2015-05-28 5 views
1

Я попытался интегрировать узел js с моим приложением, я только что проверил HTTP-сервер. Он работает хорошо, но когда я использую https-сервер, следуя моему индексу index.php, чтобы подписаться на сообщение , Это не работает.Узел js Faye Клиент не работает должным образом с HTTPS

запустить сервер

var https = require('https'), 
    faye = require('faye'); 
var fs = require('fs'); 

var options = { 
    key: fs.readFileSync('/etc/apache2/ssl/apache.key'), 
    cert: fs.readFileSync('/etc/apache2/ssl/apache.crt') 
}; 

var server = https.createServer(options), 
    bayeux = new faye.NodeAdapter({mount: '/'}); 

bayeux.attach(server); 
server.listen(1337); 

создать клиент

<script src="faye-browser-min.js"></script> 
<script> 
var client = new Faye.Client('https://localhost:1337/'); 

client.subscribe('/messages/*', function(message) { 
    alert('Got a message:'); 
}); 
</script> 

Отправить сообщения

Я использовал клиента Faye для отправки сообщения в test.php.

$adapter = new \Nc\FayeClient\Adapter\CurlAdapter(); 
$client = new \Nc\FayeClient\Client($adapter, 'https://localhost:1337/'); 

$client->send("/messages/test", array("name" => "foo"), array("token" => "456454sdqd")); 

Спасибо,

Пожалуйста, скажите мне, как проверить, есть ли какая-либо ошибка на стороне сервера.

+0

Как именно это не работает? Вы получаете ошибку, возможно, неожиданный вывод? – thodic

+0

На самом деле я ожидаю оповещения ('Получил сообщение:'); , Но я не получил предупреждения, а также никаких ошибок. – KTAnj

ответ

4

Я исправил проблему самостоятельно, проблема не была на стороне сервера. Это было в стороне php Faye Client. Этот Php-клиент отлично работает для HTTP-сервера, но мне нужно использовать его для HTTPS-сервера. Я выполнил следующие изменения, тогда он отлично работает.

/vendor/nc/faye-client/src/Nc/FayeClient/Adapter/CurlAdapter.php

public function postJSON($url, $body) 
{ 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $body); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
       'Content-Type: application/json', 
       'Content-Length: ' . strlen($body), 
      )); 

    curl_exec($curl); 
    curl_close($curl); 
}