2016-07-29 62 views
0

我已經安裝的node.js,socket.io,predis,ioredis在laravel 5.2本地主機並沒有laravel 5.2(socket.io)

當我運行

發送任何數據節點socket.js

在gitbash中,沒有任何返回。

位於localhost:3000,第一,它加載了一段時間,然後本地主機沒有發送顯示任何數據錯誤(做應該顯示)

socket.js文件:http://laravel.io/bin/OeGxv

路線文件:http://laravel.io/bin/d9PvY

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

回答

0

我不認爲可以幫你,但我全成使用Redis的使用Laravel 5.1,這是代碼。

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

ty代碼,但是當我去本地主機:300,不能GET /顯示。 –

+0

也在localhost:8000/fire,錯誤是:Class'App \ Events \ EventName'找不到 –