2017-01-10 17 views
0

我一直在尋找了將近10個小時,才發現similar question,尚未事情應該是這樣,雖然我已經盡我所能,以使其能夠回答他們。對不起,如果它只是愚蠢的問題,但要麼我不知道,或者它不是應該的方式工作。角2,Laravel 5.2和ioredis實時應用

所以我的角2組件有類似

import * as io from "socket.io-client"; 
export class TasklistComponent implements OnInit { 
ngOnInit() { 
    var socket = io("http://localhost:3000"); 
    socket.on("test-channel:TasklistModified", function(message) { 
     console.log(message); 
    }); 
} 
} 

我已經在我的laravel根目錄配置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({ 
    scheme: 'localhost', 
    port: 6379,   // Redis port 
    host: '127.0.0.1' 
}); 

redis.subscribe('test-channel', function(err, count) { 
    //.. 
}); 

redis.on('message', function(channel, message) { 
    console.log("Message Recieved", channel, message); 

    message = JSON.Parse(message); 
    io.emit(channel + ":" + message.event, message.payload); 
}); 

http.listen(3000, function() { 
    console.log('listening on port 3000'); 
}); 

而且我對laravel routes.php

Route::get('event', function() { 
    event(new TasklistModified([ 
     'name' => 'test' 
    ])); 
}); 
//Event Class 
use App\Events\Event; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 

class TasklistModified extends Event implements ShouldBroadcast 
{ 
    use SerializesModels; 
    public $tasklist; 
    public function __construct($tasklist) 
    { 
     $this->tasklist = $tasklist; 
    } 
    public function broadcastOn() 
    { 
     return ['test-channel']; 
    } 
} 

以下事件類和路線我已經打開兩個瀏覽器,並試圖運行,

角:本地主機:4200

而Laravel

本地主機:8000 /事件

我不能得到任何迴應時,我打在laravel event路線。

運行的應用程序

節點:3000

Laravel:8000

Angular2:4200分

你的答案可以理解很多。 感謝

回答