2015-06-18 1 views
3

Я на Laravel 5.1 и следуя руководству здесь: http://laravel.com/docs/5.1/redis#pubsubRedis паб/суб Подписаться возвращения сообщение об ошибке соединения

Я создал простой сервер Socket.io и на стороне клиента, я испускал сообщение для моего канала, розетка .io может регистрировать сообщение.

Однако я выполнил команду, которую я сделал для redis pub/sub, она ничего не получила, когда клиентская сторона выпустила сообщение. Через некоторое время, выдается ошибка:

[Predis \ Подключение \ ConnectionException] Ошибка при чтении строки с сервера. [tcp: //127.0.0.1: 6379]

Затем я попытался использовать метод публикации в команде, он работает. Сервер socket.io способен регистрировать сообщение.

Вот моя консольная команда

<?php 

namespace App\Console\Commands; 

use Illuminate\Support\Facades\Redis; 
use Illuminate\Console\Command; 

class ChannelSub extends Command 
{ 
    /** 
    * The name and signature of the console command. 
    * 
    * @var string 
    */ 
    protected $signature = 'channel:sub'; 

    /** 
    * The console command description. 
    * 
    * @var string 
    */ 
    protected $description = 'Command description.'; 

    /** 
    * Create a new command instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    /** 
    * Execute the console command. 
    * 
    * @return mixed 
    */ 
    public function handle() 
    { 

     Redis::subscribe(['my-channel'], function($message) { 
      $this->info($message); 
     }); 
    } 
} 

Попробуйте с

php artisan channel:sub 

Я использую predis/predis для поддержки Redis в Laravel.

+0

Пожалуйста, обратите внимание на ответ этой теме и посмотреть, если это помогает :) http://stackoverflow.com/questions/11776029/predis-is- давая-error-while-reading-line-from-server –

+0

Я видел, что, как мне установить? read_write_timeout = 0 на мой метод подписки? спасибо – Ravensmith450

+0

Я думаю, вы должны установить этот параметр, когда вы настроили соединение. Устранить где-нибудь внутри поставщика/'predis_package_path'/config. Не уверен, что на самом деле не использовал redis. Но я знаю, какие функции он предоставляет. Я также понимаю, что вы пытаетесь отправлять сообщения через websockets –

ответ

0

Laravel 5,2 изменение по конфигурации/database.php

'redis' => [ 

    'cluster' => false, 

    'default' => [ 
     'host' => env('REDIS_HOST', 'localhost'), 
     'password' => env('REDIS_PASSWORD', null), 
     'port' => env('REDIS_PORT', 6379), 
     'database' => 0, 
    ], 
    'subscribe' => [ 
     'host' => env('REDIS_HOST', 'localhost'), 
     'password' => env('REDIS_PASSWORD', null), 
     'port' => env('REDIS_PORT', 6379), 
     'database' => 0, 
     'read_write_timeout' => 0 
    ], 

],