2016-07-29 65 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'找不到 –