2016-07-29 7 views
0

私はすでにインストールしているのNode.js、socket.io、私はlocalhostがlaravel 5.2(socket.io)

を実行するとpredis、laravel 5.2

にioredis内の任意のデータを送信しませんでしたノードソケット.js

gitbashでは、何も返されません。

はlocalhostで

:3000は、まずそれがその後、localhostの任意のデータエラーが表示されて送信されませんでしたいつかのためにロードします(表示されるべきである行われる)

socket.jsファイル:http://laravel.io/bin/OeGxv

routesファイル:http://laravel.io/bin/d9PvY

package.json:http://laravel.io/bin/Kk5mB

答えて

0

私はあなたを助けることができると思ういけないが、私はLaravel 5.1でのRedisを使って成功し、これがコードです。

composer.json

"require": { 
    "php": ">=5.5.9", 
    "laravel/framework": "5.1.*", 
    "pusher/pusher-php-server": "^2.2", 
    "predis/predis": "^1.1" 

routes.phpの

Route::get('/setredis',[ 
    'as'=>'set.redis', 
    'uses'=>'[email protected]' 
]); 

Route::get('/getredis',[ 
    'as'=>'get.redis', 
    'uses'=>'[email protected]' 
]); 

Route::get('fire', function() { 
    // this fires the event 
    event(new \App\Events\EventName()); 
    return "event fired"; 
}); 

Route::get('test', function() { 
    // this checks for the event 
    return view('test'); 
}); 

TestController.php

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use Redis; 

class TestController extends Controller 
{ 
    /** 
    * Display a listing of the resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function index() 
    { 
     Redis::set('name', 'Taylor'); 
    } 

    /** 
    * Show the form for creating a new resource. 
    * 
    * @return \Illuminate\Http\Response 
    */ 
    public function create() 
    { 
     $user = Redis::get('name'); 
     echo $user; 
    } 

test.blade.php

@extends('master') 

@section('content') 
    <p id="power">0</p> 
@stop 

@section('footer') 
    <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script> 
    <script> 
     var socket = io('http://testlaravel5.com:3000'); 
     socket.on("test-channel", function(message){ 
      console.log(message); 
      // increase the power everytime we load test route 
      $('#power').text(parseInt($('#power').text()) + parseInt(message.data.power)); 
     }); 
    </script> 
@stop 

socket.js

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var Redis = require('ioredis'); 
var redis = new Redis(); 
redis.subscribe('test-channel', function(err, count) { 
}); 
redis.on('message', function(channel, message) { 
    console.log('Message Recieved: ' + message); 
    message = JSON.parse(message); 
    io.emit(channel, message.data); 
}); 
http.listen(3000, function(){ 
    console.log('Listening on Port 3000'); 
}); 

EventName.php

<?php 

namespace App\Events; 

use App\Events\Event; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 

class EventName extends Event implements ShouldBroadcast 
{ 
    use SerializesModels; 
    public $data; 
    /** 
    * Create a new event instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->data = array(
      'power'=> '10' 
     ); 
    } 

    /** 
    * Get the channels the event should be broadcast on. 
    * 
    * @return array 
    */ 
    public function broadcastOn() 
    { 
     return ['test-channel']; 
    } 
} 

私はあなたを助ける願っています!

+0

私はlocalhost:300に行ったときにGET /が表示されます。 –

+0

localhost:8000/fireでもエラー:クラス 'App \ Events \ EventName'が見つかりません –